如何检查字符串在 Python 中的常量词之上是否至少有 1 个词的变体?

因此,我的脚本会提取网站上列出的产品的标签,我不断地寻找一种产品,我知道它有一个特定的关键字和另一个拼写不时变化的关键字。关键字常量是“blazer”,另一个变量关键字是“10”或“十”。这是找到包含“西装外套”一词以及“10”或“十”的标题的正确方法吗?


if 'blazer' in compareName and 'ten' or '10' in compareName:

  func()

else:

  pass

因此,如果字符串变量 compareName 同时具有 'blazer' 和 'ten' 或 'blazer' 和 '10',我希望该函数运行


慕的地6264312
浏览 149回答 3
3回答

撒科打诨

这'ten' or '10' in compareName部分不会给你你想要的结果。每次都会返回“十”!相反,您需要检查“十”是否在 compareName 中,并检查“10”是否在比较名称中,并将 或 放在两者之间,如下所示:if 'blazer' in compareName and ('ten' in compareName or '10' in compareName):

手掌心

您似乎对编程的工作方式有根本的误解。我强烈建议你在继续之前阅读一些比较。这里的声明:if 'blazer' in compareName and 'ten' or '10' in compareName:基本上评估为:if (('blazer in compareName) == True) and ('ten' == True) or (('10' in compareName) == True):假设compareName是 'blazerten',它将评估为:if True and True or False:# Note: Python evaluates OR before AND operators# Result: True看起来不错?不!如果compareName是 'blazer',它将评估相同的东西。因为第二个条件'ten'总是评估为,True因为它不是一个空字符串,所以一旦你满足第一个条件,第二个和第三个条件就没有实际意义了。正确的方法是提到的其他答案,您需要分别进行比较:if 'blazer' in compareName and    'ten' in compareName or    '10' in compareName:注意:如果您尊重操作优先级,则不需要括号。如果你觉得有点冒险,又不想重复太多,你可以尝试用列表理解来表达:if 'blazer' in compareName and   any([part in compareName for part in ['ten', '10']]):第二个条件现在由any()函数处理。当然,需要注意的是,您放弃了一点可读性。优势虽然是如果你需要比较多只'ten',并'10'在OR子句中,你可以简单地添加到第二个条件的名单。

偶然的你

我相信有更好的方法可以做到这一点,但要简单地维护您的语法并给出正确的答案,您的if语句应该是if 'blazer' in compareName and ('ten' in compareName or '10' in compareName):    func()else:    pass
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python