2024-06-01 10:04:55 发布
网友
How to check a string for specific characters? 我发现这个链接很有用。但我的密码怎么了?在
string = "A17_B_C_S.txt" if ("M.txt" and "17") in string: print True else: print False
答案总是出来的
这是因为您的and计算结果为17,它位于stringList中。由于短路,and的值为17。在
and
17
stringList
>>> "M.txt" and "17" '17'
Python计算非空字符串的值True。因此,M.txt的计算结果为True,因此表达式的值取决于返回的第二个值(17),并在stringList中找到。(为什么?当使用True值执行and时,表达式的值取决于第二个值,如果是False,则表达式的值为False,否则为True。)
True
M.txt
False
您需要将表达式更改为
或者使用内置的^{}
if all(elem in stringList for elem in ["M.txt", "17"]): #...
那是因为
("M.txt" and "17") in string
并不意味着听起来像什么。在python中,它的意思是:
test if a value, you'll get when performing boolean and between "M.txt" and "17", is found inside a 'string'
代码中的and不仅执行and运算符,而且还返回最后一项,即"17"。因此(“M.txt”和“17”)将返回“17”,因此它实际上只测试"17"是否在string中
"17"
string
如果你真正想要的是:
test if there is "M.txt" in string and also "17" in string
你必须写下:
stringList = "A17_B_C_S.txt" if "M.txt" in stringList and "17" in stringList: print True else: print False >>> True
('M.txt' and '17')返回'17'。所以您只是在测试'17' in stringList。在
('M.txt' and '17')
'17'
'17' in stringList
这是因为您的
and
计算结果为17
,它位于stringList
中。由于短路,and
的值为17。在Python计算非空字符串的值
True
。因此,M.txt
的计算结果为True
,因此表达式的值取决于返回的第二个值(17
),并在stringList
中找到。(为什么?当使用True
值执行and
时,表达式的值取决于第二个值,如果是False
,则表达式的值为False
,否则为True
。)您需要将表达式更改为
^{pr2}$或者使用内置的^{}
那是因为
并不意味着听起来像什么。在python中,它的意思是:
代码中的
and
不仅执行and
运算符,而且还返回最后一项,即"17"
。因此(“M.txt”和“17”)将返回“17”,因此它实际上只测试"17"
是否在string
中如果你真正想要的是:
你必须写下:
^{pr2}$
^{pr2}$('M.txt' and '17')
返回'17'
。所以您只是在测试'17' in stringList
。在相关问题 更多 >
编程相关推荐