Finding string in a file
本问题已经有最佳答案,请猛点这里访问。
这里的第一个计时器使用真正的文件和I/O。我正在通过测试仪运行我的代码,测试仪通过我的代码调用我正在使用的不同文件。为此,我在下面将文件表示为"文件名",在该文件中查找的字符串表示为"s"。我很确定我正在浏览代码行并正确地搜索字符串。这就是我想要的:
1 2 3 4 5 6 7 | def locate(filename, s): file= open(filename) line= file.readlines() for s in line: if s in line: return [line.count] |
我知道回路线不对。如何将要查找的字符串所在的行的编号作为列表返回?
您可以使用
1 2 3 | def locate(filename, s): with open(filename) as f: return [i for i, line in enumerate(f, 1) if s in line] |
如果可以从第一行和第三行找到搜索的字符串,它将生成以下输出:
1 | [1, 3] |
这些是问题所在
1 2 | for s in line: if s in line: |
您必须将
1 2 3 4 5 6 7 8 9 10 11 12 13 | def locate(filename, s): file= open(filename) line= file.readlines() index = 0; for l in line: print l; index = index + 1 if s in l: return index print locate("/Temp/s.txt","s") |
您可以使用
示例文本文件
1 2 3 | hello hey s hi hola s |
代码
1 2 3 4 5 6 7 8 9 | 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 |
产量
1 | [0, 2] |
如我们所见,它表明字符串
发生什么事
打开具有读取权限的文件。
遍历每一行,
循环访问行中的每个单词。
如果传入函数的
返回