我有一个大文本文件,其格式为以下格式:
DELIM
filename1
information
information
DELIM
filename2
information
information
information
information
DELIM
等等,分隔符之间的数据量不同。 我如何将分隔符之间的所有内容写成列表?
答案 0 :(得分:2)
如果在中间行中找不到DELIM
,您可以通过以下方式轻松完成:
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
,以达到与前一代码相同的值,只有我们不需要事先读取文件,因此它也适用于大文件。