【发布时间】:2018-05-23 03:21:09
【问题描述】:
我经常遇到这样的情况:我从文件或任何地方提取一些信息,然后必须通过几个步骤将数据按摩成最终所需的形式。例如:
def insight_pull(file):
with open(file) as in_f:
lines = in_f.readlines()
dirty = [line.split(' ') for line in lines]
clean = [i[1] for i in dirty]
cleaner = [[clean[i],clean[i + 1]] for i in range(0, len(clean),2)]
cleanest = [i[0].split() + i[1].split() for i in cleaner]
with open("Output_File.txt", "w") as out_f:
out_f.writelines(' '.join(i) + '\n' for i in cleanest)
如上例:
# Pull raw data from file splitting on ' '.
dirty = [line.split(' ') for line in lines]
# Select every 2nd element from each nested list.
clean = [i[1] for i in dirty]
# Couple every 2nd element with it's predecessor into a new list.
cleaner = [[clean[i],clean[i + 1]] for i in range(0, len(clean),2)]
# Split each entry in cleaner into the final formatted list.
cleanest = [i[0].split() + i[1].split() for i in cleaner]
鉴于我不能将所有编辑放入一行或循环中(因为每个编辑都取决于之前的编辑),有没有更好的方法来构建这样的代码?
如果问题有点含糊,我们深表歉意。非常感谢任何意见。
【问题讨论】:
-
从技术上讲,你说你不能在一行中完成这一切是错误的,因为你可以对其他列表推导的输出进行列表推导,但从道德上讲,你不应该这样做。
-
你能展示一些示例输入和输出吗?
-
不幸的是,没有一些数据是敏感的,但上面的例子只是为了说明这一点。这种问题不断出现在我面前。
-
只是组成一些随机输入并显示预期的输出。可能有更好的方法来做您正在尝试的事情,但除非我们看看一些有代表性的例子,否则我们无能为力。
标签: python file list-comprehension string-iteration value-iteration