如果一个字符串中有一些单词怎么了

2024-06-01 10:04:55 发布

您现在位置:Python中文网/ 问答频道 /正文

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

答案总是出来的

^{pr2}$

Tags: andtointxt密码forstringif
3条回答

这是因为您的and计算结果为17,它位于stringList中。由于短路,and的值为17。在

>>> "M.txt" and "17"
'17'

Python计算非空字符串的值True。因此,M.txt的计算结果为True,因此表达式的值取决于返回的第二个值(17),并在stringList中找到。(为什么?当使用True值执行and时,表达式的值取决于第二个值,如果是False,则表达式的值为False,否则为True。)

您需要将表达式更改为

^{pr2}$

或者使用内置的^{}

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

如果你真正想要的是:

test if there is "M.txt" in string and also "17" in string

你必须写下:

^{pr2}$
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。在

^{pr2}$

相关问题 更多 >