python:TypeError:类型为'builtin_function_or_method'的参数不可迭代

时间:2013-10-16 02:55:10

标签: python for-loop typeerror

所以我一直在尝试完成一个带有.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,因为我需要按照它们存在的相同顺序来保存错误;我不希望它像一套一样被订购。所以如果有人对如何解决这个问题有其他见解。那会很棒。

如果有人能够对此有所启发,那将非常感激!

2 个答案:

答案 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'是你拼写检查的文件。