0

所以我一直在尝试完成一个拼写检查器,它需要一个 .txt 并与 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,因为我需要将错误保持在相同的顺序中;我不希望它像一套一样被订购。因此,如果有人对如何解决此问题也有其他见解。那很好啊。

如果有人可以对此有所了解,那将不胜感激!

4

2 回答 2

0

看起来您正在尝试以conv2可迭代的方式访问,尽管您已将其设置为等于方法add()...您在您的行中做什么:

conv2 = conv1.add

这是问题所在...我认为您正在寻找除 之外的其他内容.add,即仅分配conv2为等于该函数(例如,您可以说conv2(2),等于conv1.add(2))。

于 2013-10-16T03:00:18.943 回答
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' 是您要进行拼写检查的文档。

于 2013-10-16T03:09:22.200 回答