0

我是使用 python 编程的初学者,我有一个问题可能很容易回答。

所以我有一个从 .txt 文件导入的单词词典,接下来我的程序要求你输入一个句子,然后它将你输入的每个单词保存到另一个列表中。

我必须编写一个程序来检查名为的列表中的每个单词是否都在名为sentence_list的列表中words。如果字典中不存在该单词,我必须将其放入另一个列表中,该列表由所有输入错误或不在字典中的单词填充。

为了更容易理解,我的程序应该像这样工作:

Type your sentence:
My naeme is John, I lieve in Italy, which is beatiful country.
['naeme', 'lieve', 'beatiful']

这是我到目前为止可以做的:

words = open("dictionary.txt", encoding="latin2").read().lower().split()

sentence=input("Type your sentence: ")

import re

sentence_list = re.findall("\w+", sentence.lower())

我知道我必须对 for 做一些事情,但是对于我熟悉的 Javascript,python 中的 for 是不同的。

4

2 回答 2

3

使用集合

您可以使用集合来查找不在字典列表中的所有单词。

>>> set([1,2,3]).difference([2,3])
set([1])

请注意,这将不包括重复项。

所以对你来说,它会是这样的(如果你需要结果是一个列表):

misspelled_word_list = list( set(sentence_list).difference(words) )

用于

由于您需要使用for,因此这是另一种(效率较低)的方法:

misspelled_word_list = []
for word in sentence_list:
    if (not word in misspelled_word_list) and (not word in words):
        misspelled_word_list.append(word)

您只需遍历单词sentence_list并检查它们是否在您的words列表中。

于 2012-10-20T15:30:06.733 回答
1

这是一个使用的单行代码for,它会生成一个set拼写错误的单词:

mispelled = { word for word in sentence if word not in dictionary }

为清楚起见,我已重命名您的变量

于 2012-10-20T16:59:26.350 回答