使用Python迭代文本文件并将一组行存储在单独的数组中
我有一个这样的文本文件------- 在这个文本文件中,我只想提取“重要”部分,并将三行“重要”存储在一个由逗号分隔的数组中。然后我想用前面提到的数组创建一个数组 我不太熟悉Python和与文本提取相关的包 我不知道如何处理这个问题。我非常感谢您的帮助。AFAIU请尝试使用:使用Python迭代文本文件并将一组行存储在单独的数组中,python,text,iteration,Python,Text,Iteration,我有一个这样的文本文件------- 在这个文本文件中,我只想提取“重要”部分,并将三行“重要”存储在一个由逗号分隔的数组中。然后我想用前面提到的数组创建一个数组 我不太熟悉Python和与文本提取相关的包 我不知道如何处理这个问题。我非常感谢您的帮助。AFAIU请尝试使用: with open('file2.txt', 'r') as f: l = [] c = 0 s = [] for line in f.readlines() + ['']:
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']
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']
你分享的不多,但清楚的是:
- 你可以从某种程度上区分一条重要的线和一条不重要的线李>
- 你需要阅读文件的每一行
- 您希望将连续的“重要”结果分组在一起
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)
这段代码适用于您的示例,只需更改就很重要了
,这样才有意义
请注意,示例代码将在每行末尾包含换行符-有多种方法可以消除它,具体取决于您是要一次读取整个文件,还是一次读取一行。你自己应该不难弄明白
如果您正在寻找这些简短但难以理解的解决方案之一:
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)
你分享的不多,但清楚的是:
- 你可以从某种程度上区分一条重要的线和一条不重要的线李>
- 你需要阅读文件的每一行
- 您希望将连续的“重要”结果分组在一起
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)
这段代码适用于您的示例,只需更改就很重要了
,这样才有意义
请注意,示例代码将在每行末尾包含换行符-有多种方法可以消除它,具体取决于您是要一次读取整个文件,还是一次读取一行。你自己应该不难弄明白
如果您正在寻找这些简短但难以理解的解决方案之一:
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)
为了澄清,您想要一个包含三个“重要”的数组?另外,您希望包括整行还是仅包含“重要”一词?您如何确定重要与不重要?如果您显示此输入的最终列表应该是什么样子,这将很有帮助。为了澄清,您希望有一个包含三个“重要”的数组?另外,你想包括整行,还是只包括“重要”一词?你如何确定重要与不重要?如果你用这个输入显示出你的最终列表应该是什么样子,那会很有帮助。