我有这种格式线大文本文件:提取分隔符之间的文本文件的行成一个列表的Python
DELIM
filename1
information
information
DELIM
filename2
information
information
information
information
DELIM
等,其中数据的分隔符之间的量而变化。 我该如何着手将分隔符之间的所有内容写成列表?
我有这种格式线大文本文件:提取分隔符之间的文本文件的行成一个列表的Python
DELIM
filename1
information
information
DELIM
filename2
information
information
information
information
DELIM
等,其中数据的分隔符之间的量而变化。 我该如何着手将分隔符之间的所有内容写成列表?
只要DELIM
不能被发现在中间线,你能做到这一点很容易通过:
DELIM
split
每个块和过滤坯件(工件)施加str.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
基的非DELIM线一起和DELIM线一起为好,与True/False
键:我们筛选出True
键与DELIM
组对应,并转换为list
,达到与前面的代码相同的值,只是我们不需要事先读取文件,所以它可以与一个巨大的文件以及。
你能举一个(小)例子吗?文件名和“信息”有什么结构上的不同? –
文件名都是“* .h”或“* .cpp”,信息全部是函数名称 – Johnny