将分隔符之间的文本文件行提取到列表Python中

时间:2017-02-12 21:24:37

标签: python

我有一个大文本文件,其格式为以下格式:

DELIM
filename1
information
information
DELIM
filename2
information
information
information
information
DELIM

等等,分隔符之间的数据量不同。 我如何将分隔符之间的所有内容写成列表?

1 个答案:

答案 0 :(得分:2)

如果在中间行中找不到DELIM,您可以通过以下方式轻松完成:

  • 完全读取您的文件(如果您的文件中包含20Tb的数据但对于合理大小的文件没有问题,则效果不佳)
  • str.split
  • 上应用DELIM
  • 在列表理解中拆分每个块并过滤空白(split的工件)

我的建议:

with open("file.txt") as f:
    lines = [x.split() for x in f.read().split("DELIM") if x]

print(lines)

输入结果(作为行列表的列表):

[['filename1', 'information', 'information'], ['filename2', 'information', 'information', 'information', 'information']]

编辑:使用大文件,您可以使用itertools.groupy,如下所示(避免一次读取文件)

with open("file.txt") as f:
    lines = [list(v) for k,v in itertools.groupby(f,key=lambda x : x.strip()=="DELIM") if not k]

groupby使用True/False键将非分隔线和分隔线组合在一起:我们过滤掉True键,对应DELIM分组并转换为list,以达到与前一代码相同的值,只有我们不需要事先读取文件,因此它也适用于大文件。