【发布时间】:2014-07-21 23:59:03
【问题描述】:
def line_number(word, fname):
with open(fname) as f:
number_list = ""
for i, line in enumerate(f, 1):
if word in line:
number_list += (str(i)+", ")
return number_list[:-2]
上面的函数假设在一个txt文件中找到匹配字符串出现的行号。但是,例如,如果我们正在搜索字符串“yes”,并且我们在第 20 行有字符串“yes”,在第 51 行有字符串“eyes”,则该函数将返回第 20 行和第 51 行,因为第 51 行包含一个子字符串“眼睛”中的“是”,我该如何解决这个错误?
好的,我已经解决了问题,把if word in line:改成if word in re.split('(\W+)', line):
通过这样做,我将行拆分为单词和标点符号以找到完全匹配的内容。
但我注意到另一个问题。比如line 159上有一句“你你你”。 you这个词出现3次,函数只统计you在line 159出现一次,程序打印出来:
you 159
但我希望函数计算 3 次并打印出来:
you 159, 159, 159
有什么办法吗?
【问题讨论】:
-
谢谢,我已经解决了这个问题,但是我发现还有一个问题,你能看看吗?
标签: debugging