【发布时间】:2016-09-09 01:56:12
【问题描述】:
我正在尝试打印 Python 文件中出现该单词的单词和行号。目前我得到了第二个单词的正确数字,但我查找的第一个单词没有打印正确的行号。 我 必须遍历 infile,使用字典存储行号,删除新行字符,删除任何标点符号并在提取数字时跳过空白行。我需要添加一个实际上是列表的值,以便如果单词包含在多行中,我可以将行号添加到列表中。
调整后的代码:
def index(f,wordf):
infile = open(filename, 'r')
dct = {}
count = 0
for line in infile:
count += 1
newLine = line.replace('\n', ' ')
if newLine == ' ':
continue
for word in wordf:
if word in split_line:
if word in dct:
dct[word] += 1
else:
dct[word] = 1
for word in word_list:
print('{:12} {},'.format(word,dct[word]))
infile.close()
电流输出:
>>> index('leaves.txt',['cedars','countenance'])
pines [9469, 9835, 10848, 10883],
counter [792, 2092, 2374],
期望的输出:
>>> index2('f.txt',['pines','counter','venison'])
pines [530, 9469, 9835, 10848, 10883]
counter [792, 2092, 2374]
【问题讨论】:
-
我想要的输入被截断以便于理解。但是,我刚刚注意到当前输出实际上是在提取文件中出现单词的实例。这意味着,我要么没有正确递增或将行号添加到字典中。
-
第三个循环你还是要把'word'改成'word2',而且关联的地方用'word2',不然肯定不行,看我下面的帖子跨度>
-
您是否在 IDE(或其他可执行变体)中运行它?在这种情况下,如果您将 word 更改为 word 2 并不重要,并且当您使用代码的最后一个变体时,您会得到一个错误。就像我说的最后一个代码,无论如何,它不会提取行号,它会提取其他内容。
-
for word2 in split_line: if word2 == word: 这是你需要的部分。如果没有比较,您当前的代码将无法使用“word2”,并且在进行比较时您没有“word2”
-
当我在第三个 for 循环中调整代码以反映 word2 时,代码不会打印出单词的行号实例。
标签: python-3.x