roc*_*erz 2 python string if-statement find
我有这个 if 语句,必须检查这两个字符串是否存在,self.line.lower()例如:123abc567或blaxyzbla:
if 'abc' or 'xyz' in self.line.lower():
print ('Present')
else:
print ('Not Present')
Run Code Online (Sandbox Code Playgroud)
self.line.lower()如果不包含或abc,为什么这会返回 true(Print Present)xyz如果字符串中
我必须用它来工作:
if self.line.lower().find('abc') != -1:
print ('Present')
elif self.line.lower().find('xyz') != -1:
print ('Present')
else:
print ('Not Present')
Run Code Online (Sandbox Code Playgroud)
多谢。
你所拥有的相当于:
if 'abc' or ('xyz' in self.line.lower()):
Run Code Online (Sandbox Code Playgroud)
优先顺序表可以在此 Python文档中找到。在图表底部,您将看到in优先级高于or(or and),因此'xyz'被检查为 in self.line.lower(),然后该结果被or'ed with 'abc'。自从'abc'计算结果为非零值,因此整个表达式始终为真。
我能想到的一种巧妙的方法是作为嵌套for in,根据我们正在搜索的字符串查找目标列表中的项目。
if any(x in line.lower() for x in ['abc', 'xyz']):
print ('Present')
else:
print ('Not Present')
Run Code Online (Sandbox Code Playgroud)
x in line.lower() for x in ['abc', 'xyz']生成一个生成器,该生成器将为每个元素返回 true 或 false。您可以用来any确定生成的列表中的任何元素是否true意味着至少找到了其中一个元素。如果您想检查是否在字符串中找到了所有项目,您可以替换any为all.
| 归档时间: |
|
| 查看次数: |
19522 次 |
| 最近记录: |