这里的第一个计时器,真正使用文件和I / O.我正在通过测试人员运行我的代码,测试人员通过我的代码调用我正在使用的不同文件。所以为此,我将文件表示为下面的“文件名”,并将我在该文件中寻找的字符串表示为“s”。我很确定我正在仔细检查代码并正确搜索字符串。这就是我的意思:
def locate(filename, s):
file= open(filename)
line= file.readlines()
for s in line:
if s in line:
return [line.count]
我知道回程线不正确。我如何将列表中我正在寻找的字符串的行号作为列表返回?
答案 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开始计数
发生了什么
打开具有读取权限的文件。
对每一行进行迭代,enumerate
对其进行迭代,并跟踪line_num
中的行号。
迭代该行中的每个单词。
如果您传递给该功能的letter_to_find
位于word
,则会将line_num
追加到locations
。
返回locations
答案 2 :(得分:0)
这些是问题行
Queue
除了for s in line:
if s in line:
line
读入另一个变量
s