【发布时间】:2019-12-10 09:05:15
【问题描述】:
我有一个像这样的文件 [samplefile.txt] -
dummy line 1
dummy line 2
create_list animal -list
tiger
create_list bird -list
crow
dummy line 3
create_list car -list
ford/mustang
dummy line 4
dummy line 5
create_list truck
-list ford/F150
create_list human -list {
jack
john}
我想得到这样的输出 -
['tiger', 'crow', 'ford/mustang', 'ford/F150']
我正在使用的代码 -
import re
def extractListItems(File):
f = open(File,"r")
content = f.read()
list_items = []
for m in re.finditer(r'(?:\bcreate_list+\s+\S+\s+-list+\s*)((?:\b\S+\b(?:\s*))+)(?:\n)', content):
list_items.extend(re.split(r'\s+', m.group(1).strip()))
print (list_items)
f.close()
extractListItems("samplefile.txt")
我需要进行哪些修改才能获得所需的输出?
编辑 - 由文件内容和所需输出更改。
【问题讨论】:
-
列表中可以有更多项目,还是只有一个?是否所有项目行都以两个空格开头,所有虚拟行都以“虚拟”开头?如果最后两个问题的答案是“是”,那么通过迭代文件而不是使用 re.
-
我可以在列表中包含更多项目。但是虚拟线没有虚拟线。这是一个大约 10 万行的大文件。