我有一个像这样的文本文件-------
important unimportant
important unimportant
important unimportant
unimportant
unimportant
important unimportant
important unimportant
important unimportant
unimportant
unimportant
important unimportant
important unimportant
important unimportant
在此文本文件中,我只想提取“重要”部分并将三行“重要”部分存储在一行中,并用逗号分隔。然后,我想用前面提到的数组创建一个数组。
我对Python和与文本提取有关的软件包不是很熟悉。
我不确定如何解决此问题。我非常感谢您的帮助。
答案 0 :(得分:0)
AFAIU尝试使用:
with open('file2.txt', 'r') as f:
l = []
c = 0
s = []
for line in f.readlines() + ['']:
if 'important ' in line:
c += 1
s.append('important')
else:
l.append(', '.join(s))
c = 0
s.clear()
print(list(filter(None, l)))
输出:
['important, important, important', 'important, important, important', 'important, important, important']
答案 1 :(得分:0)
您分享的内容不多,但很明显:
循环查看文件:
with open('myfile.txt', 'r') as f:
for line in f:
# do something with `line`
您可以收集列表中重要的行,每当到达不重要的行或文件末尾时,如果列表中有行,请将其添加到结果中。
将所有内容放在一起:
def is_important(line):
return 'important' in line.split() # replace with an actual test
result = []
with open('myfile.txt', 'r') as f:
important = []
for line in f:
if is_important(line):
important.append(line)
elif important:
result.append(important)
important = []
# done reading, add remaining important lines to result
if important:
result.append(important)
print(result)
此代码适用于您的示例,只需更改is_important
即可使其有意义。
请注意,示例代码将在每行的末尾包含换行符-有多种方法来摆脱它,具体取决于您要一次读取整个文件还是一次读取整个文件。应该不难发现这一点。
如果您正在寻找这些简短但难以阅读的解决方案之一:
from itertools import groupby
def is_important(line):
return 'important' in line.split() # replace with an actual test
result = [list(x) for c, x in groupby(open('myfile.txt', 'r').readlines(), lambda x: is_important(x)) if c]
print(result)