Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python迭代文本文件并将一组行存储在单独的数组中_Python_Text_Iteration - Fatal编程技术网

使用Python迭代文本文件并将一组行存储在单独的数组中

使用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() + ['']:

我有一个这样的文本文件-------

在这个文本文件中,我只想提取“重要”部分,并将三行“重要”存储在一个由逗号分隔的数组中。然后我想用前面提到的数组创建一个数组

我不太熟悉Python和与文本提取相关的包

我不知道如何处理这个问题。我非常感谢您的帮助。

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']
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)

为了澄清,您想要一个包含三个“重要”的数组?另外,您希望包括整行还是仅包含“重要”一词?您如何确定重要与不重要?如果您显示此输入的最终列表应该是什么样子,这将很有帮助。为了澄清,您希望有一个包含三个“重要”的数组?另外,你想包括整行,还是只包括“重要”一词?你如何确定重要与不重要?如果你用这个输入显示出你的最终列表应该是什么样子,那会很有帮助。