这是我目前拥有的代码:
from collections import defaultdict
goodwords = set()
with open("soccer.txt", "rt") as f:
for word in f.readlines():
goodwords.add(word.strip())
badwords = defaultdict(list)
with open("soccer.txt", "rt") as f:
for line_no, line in enumerate(f):
for word in line.split():
if word not in text:
badwords[word].append(line_no)
print(badwords)
如何修复我的代码,以便它打印存储在words
列表和行号中的错误单词?在
例如,如果单词togeher
在第5行和第7行拼写错误,它将打印如下内容:
当您将新的
counter
插入d
时,首先检查word
是否包含在words
中。可能您想检查word
是否已经包含在d
中:检查}中应该是一个单独的
word
是否包含在words
或{if
。在您还可以使用dicts
^{pr2}$setdefault()
方法简化此逻辑:或者将
d
变成defaultdict
,这样可以更简化分配:关于一般的算法,请注意,现在您首先迭代所有行以增加计数器,然后,当计数器已经达到其最大值时,开始检查拼写错误的单词。也许您应该检查循环中递增计数器的每一行。在
从你现在所做的来看,我认为以下几点非常适合你:
这将为您提供以下输出:
^{pr2}$这只需设置一个空的默认字典,其中包含您访问的每个项目的列表,这样您就不必担心创建条目,然后在单词列表中枚举它,所以您不需要跟踪行号。在
由于您没有正确拼写的列表,因此它实际上不会检查单词是否拼写正确,只需构建一个字典,包含文本文件中的所有单词。在
要将词典转换为一组单词,请尝试:
产生:
或者,只需打印以下文字:
编辑3:
我认为这可能是最终版本: 这是一个(故意的)非常粗糙,但几乎是完全的拼写检查。在
最后,
bad_words
将是一个字典,其中未识别的单词作为关键字,单词所在的行号作为匹配的值条目。在相关问题 更多 >
编程相关推荐