Python - 从文本文件中查找行号

goo*_*cat 8 python numbers line

我正在编写在文本文件中查找的代码,并查看输入是否在其中。

例如,

我输入"比萨"

我的文本文件包含:

bread
pizza
pasta
tomato
Run Code Online (Sandbox Code Playgroud)

有没有办法打印披萨这个词所在的行号?

Rus*_*hal 6

有两种方法可以实现这一点:

  1. 将整个文件存储在内存中,以便您只能读取一次
  2. 在每次搜索时通读文件,但不必存储它

对于方法1,首先读取每一行,然后获取单词所在的索引:

with open('path.txt') as f: data = f.readlines()
line_no = data.index("pizza")
Run Code Online (Sandbox Code Playgroud)

或者,通过文件查找索引:

with open('path.txt') as f:
    for line_no, line in enumerate(f):
        if line == "pizza":
            break
    else: # for loop ended => line not found
        line_no = -1
Run Code Online (Sandbox Code Playgroud)


Oxy*_*n88 6

with open('test.txt') as f:
    content = f.readlines()

index = [x for x in range(len(content)) if 'pizza' in content[x].lower()]
Run Code Online (Sandbox Code Playgroud)

代码的第 (1) 部分将每一行读取为变量“内容”中的单独列表。

仅当“pizza”存在于该行中时,第 (2) 部分才会填充该行 # 的内容。[x for x in range(len(content))] 只是填充所有索引值,而 'if 'pizza' in content[x].lower()' 保留与字符串匹配的行 #。