错误:“TypeError: 'in <string>' 需要字符串作为左操作数,而不是列表”

时间:2021-05-02 01:22:13

标签: python

代码:

words = ['apple', 'pear', 'tree']
title = 'Hi my name is Bob'


if title in words:
    #do something

我希望能够检查我的标题是否包含这些 words,如果是,则会发生一个操作,但我遇到了此错误,我不确定它的含义或如何进行修复这个。

1 个答案:

答案 0 :(得分:2)

你需要的是这个:

 words = ['apple', 'pear', 'tree']
 title = 'Hi my name is Bob'

 if any(word.casefold() in words for word in title.split()):
    #do something

这会将 title 拆分为空格处的一系列单词,然后检查其中是否有任何出现在 words 列表中。

请注意,它使用 foldcase 方法将每个单词转换为小写,因此如果 appleApple 在您的 title 中,它会起作用

如果单词列表或标题很大,或者您经常进行此检查,您可能会发现使用集合会更有效:

 words = {'apple', 'pear', 'tree'}
 title = 'Hi my name is Bob'
 if {word.casefold() for word in title.split()} & words:
    #do something

这会将 title 转换为一组小写单词 - 并与 words 组进行交集。如果该交集包含至少一个单词,它只会do something。如果 titlewords 没有共同的条目,则交集将为空集,条件为 False。

相关问题