我是使用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中是不同的,因为它是Javascript,我很熟悉。
答案 0 :(得分: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
列表中。
答案 1 :(得分:1)
这是使用for
的单行内容,会产生set
错误的字词:
mispelled = { word for word in sentence if word not in dictionary }
为了清晰起见,我已重命名您的变量