在列表中查找单词然后打印以下 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))
我有点匆忙,所以我没有检查这个,但从逻辑上讲它应该工作......
我有一个巨大的 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
数组 上当前迭代 - 找到所需的行后,从当前索引打印出
lines
数组的一部分,直到 50 个前向位置。 - 打印由
\n
(换行符)分隔的每一行
line
的索引
如果您的文档有大量行,您可能希望避免一次将所有行加载到内存中(检查
鉴于 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))
我有点匆忙,所以我没有检查这个,但从逻辑上讲它应该工作......