在列表中查找单词然后打印以下 50 行的函数

Function to find word in list and then print following 50 lines

我有一个巨大的 txt 文件,我读入并整理成一个列表。
我正在寻找某些单词,所以我写了一个快速函数

def find_words(lines):

    for line in lines:
        if "my words" in line:
            print(line)

效果很好,但我该如何编写函数才能打印单词以及接下来的 50 行左右? 总而言之,我想找到那个词后面的文字。

从那时起,我想创建一个空的 df,并让函数在 df 中填充一个新行,其中包含单词 + 接下来的 50 行,每次它找到该单词时。

快速而肮脏的解决方案:

for i, line in enumerate(lines):
    if "my words" in line:
        print(*lines[i:i+50], sep="\n")
  • enumerate 会将 i 设置为 lines 数组
  • 上当前迭代 line 的索引
  • 找到所需的行后,从当前索引打印出 lines 数组的一部分,直到 50 个前向位置。
  • 打印由 \n(换行符)分隔的每一行

如果您的文档有大量行,您可能希望避免一次将所有行加载到内存中(检查 - 但您的问题的解决方法可能不同)。

鉴于 Python 不是必需的,您可以使用 *nix 那么这是一个单行 grep 任务,示例:

$ grep "my words" gigantic.txt -A 50

注意:-A = 之后,-B = 之前

我个人一般更喜欢使用 while 循环,但如果我在这里使用 while 循环,我会受到攻击,因为我会添加行..,但是,是的,这是我的建议:

    def find_words(lines):
        for line in lines:
            if "my words" in line:
                print(line)
                for i in range(1,50):
                    print(line(i))

我有点匆忙,所以我没有检查这个,但从逻辑上讲它应该工作......