在文件中查找字符串

时间:2016-04-10 01:48:02

标签: python file io

这里的第一个计时器,真正使用文件和I / O.我正在通过测试人员运行我的代码,测试人员通过我的代码调用我正在使用的不同文件。所以为此,我将文件表示为下面的“文件名”,并将我在该文件中寻找的字符串表示为“s”。我很确定我正在仔细检查代码并正确搜索字符串。这就是我的意思:

def locate(filename, s):

    file= open(filename)
    line= file.readlines()
    for s in line:
        if s in line:
            return [line.count]

我知道回程线不正确。我如何将列表中我正在寻找的字符串的行号作为列表返回?

3 个答案:

答案 0 :(得分:2)

您可以使用enumerate跟踪行号:

def locate(filename, s):
    with open(filename) as f:
        return [i for i, line in enumerate(f, 1) if s in line]

如果可以从第一行和第三行找到搜索到的字符串,它将产生以下输出:

[1, 3]

答案 1 :(得分:0)

您可以使用enumerate

示例文本文件

hello hey s hi
hola
s

<强>代码

def locate(filename, letter_to_find):

    locations = []
    with open(filename, 'r') as f:
        for line_num, line in enumerate(f):
            for word in line.split(' '):
                if letter_to_find in word:
                    locations.append(line_num)
    return locations

<强>输出

[0, 2]

我们可以看到它在第0行和第2行显示字符串s 注意计算机从0开始计数

发生了什么

  1. 打开具有读取权限的文件。

  2. 对每一行进行迭代,enumerate对其进行迭代,并跟踪line_num中的行号。

  3. 迭代该行中的每个单词。

  4. 如果您传递给该功能的letter_to_find位于word,则会将line_num追加到locations

  5. 返回locations

答案 2 :(得分:0)

这些是问题行

Queue

除了for s in line: if s in line:

之外,您必须将line读入另一个变量
s