所以我一直在尝试完成一个带有.txt的spell_checker,并与dictionary.txt进行比较,以找到不正确的单词。结果应该打印出.txt中错误的单词。
但是在尝试执行for循环时我一直收到此错误:
TypeError:类型为'builtin_function_or_method'的参数不可迭代
以下是我的代码:
def spell_check(wordlist):
opening = open('words.txt').read(). lower(). strip(' ')
text = []
conv = set(opening)
conv1 = set(wordlist)
conv2 = conv1.add
return [x for x in conv if x not in conv2]
编辑: 我需要conv2,因为我需要按照它们存在的相同顺序来保存错误;我不希望它像一套一样被订购。所以如果有人对如何解决这个问题有其他见解。那会很棒。
如果有人能够对此有所启发,那将非常感激!
答案 0 :(得分:0)
看起来您尝试将conv2
作为可迭代访问,但您已将其设置为等于方法add()
...您在行中做了什么:< / p>
conv2 = conv1.add
这是问题界限...我认为你正在寻找除.add
之外的其他东西,只是将conv2
指定为等于函数(例如,你可以,比如conv2(2)
,相当于conv1.add(2)
)。
答案 1 :(得分:0)
问题是您将方法add
绑定到变量conv2
。我想你可能要做的是:
def spell_check(wordlist):
# change .strip(' ') to .split(' ') to get a list
opening = open('words.txt').read().lower().split(' ')
conv = set(opening)
conv1 = set(wordlist)
# I don't think you need conv2 at all, right?
return [x for x in conv if x not in conv1]
我假设传入的wordlist
是字典,'words.txt'是你拼写检查的文件。