我有一个代表文件名的字符串,我怎样才能一次检查几个条件?我试过了
if r'.jpg' or r'.png' not in singlefile:
但一直得到误报。
我有一个代表文件名的字符串,我怎样才能一次检查几个条件?我试过了
if r'.jpg' or r'.png' not in singlefile:
但一直得到误报。
您的代码等于:
if (r'.jpg') or (r'.png' not in singlefile):
您可能正在寻找:
if r'.jpg' not in singlefile or r'.png' not in singlefile:
或者
if any(part not in singlefile for part in [r'.jpg', r'.png']):
感谢蒂姆·皮茨克:
他(你)实际上(可能)想要
if not any(singlefile.endswith(part) for part in [r'.jpg', r'.png']) # ^^^^^^^^
这是因为优先级。以下代码表示。
# r'.jpg' is constant
if r'.jpg' or (r'.png' not in singlefile):
如果恒定,或者.png
不在singlefile
. 由于常量始终为真,因此表达式始终为真。
相反,您可以尝试使用正则表达式来检查任何字符串是否符合模式。
import re
if re.match(r"\.(?:jpg|png)$", singlefile):
您的问题在于您的逻辑 OR 正在检查一个常量和一个变量。
r'.png'
将始终评估为 True,从而使您or
也为 True。
你必须检查两者,就像这样
if r'.png' not in singlefile or 'r.jpg' not in singlefile:
#do stuff
试试这个:
if r'.jpg' not in singlefile or r'.png' not in singlefile: