【发布时间】:2016-07-02 15:37:30
【问题描述】:
我正在尝试解析一个 txt 文件并将句子放入符合我标准的列表中。
文本文件由几千行组成,我正在寻找以特定字符串开头的行,让我们将此字符串称为“开始”。
此文本文件中的行可以属于一起,并且以某种方式随机以\n 分隔。
这意味着我必须查找以“start”开头的任何字符串,将其放入一个空字符串“complete”中,然后继续扫描每一行以查看它是否也以“start”开头。
如果不是,那么我需要将它附加到“完成”,因为它是整个句子的一部分。如果确实如此,我需要将“完整”附加到列表中,创建一个新的空“完整”字符串并开始附加到该字符串。这样我就可以遍历整个文本文件,而无需注意句子存在的行数。
到目前为止我的代码:
import sys, string
lines_1=[]
startswith = ('keys', 'values', 'files', 'folders', 'total')
completeline = ''
with open (sys.argv[1]) as f:
data = f.read()
for line in data:
if line.lower().startswith(startswith):
completeline = line
else:
completeline += line
lines_1.append(completeline)
# check some stuff in output
for l in lines_1:
print "______"
print l
print len(lines_1)
但是,这会将整个内容放在列表中的 1 项中,我希望将所有内容分开。
请记住,组成一个句子的行可以跨越一、二、10 或 1000 行,因此它需要找出下一个 startswith 值,将现有的 completeline 附加到列表中,然后向上填充 completeline下一句。
非常感谢!
【问题讨论】:
标签: python string list parsing append