[英]Preventing partial string match in "if" python)
我确信这很简单,但我看不到或可能无法理解解决方案。
我有一些代码:
if any (mystring in s for s in mylist)
do something with mystring
我正在测试mystring
是否在mylist
,它工作正常。
但是,如果我有清单
['apples','pears','chickens']
并且我正在测试 if 语句,我希望它仅在匹配准确时才通过,即mystring
应该通过并仅对apples
do something with mystring
,而不是app
或apple
。 问题是mystring
与mylist
部分匹配正在通过。
即在上面的示例中,如果mystring
是app
它正在传递而我也不想要它。 我知道这是微不足道的,所以很抱歉。
我认为你应该这样做
if mystring in mylist:
do something with mystring
如果您只想测试它们是否相等,您可以这样做:
if any (mystring == s for s in mylist):
do something with mystring
但是,您可以将其简化为仅检查您的字符串是否在列表中,如下所示:
if mystring in mylist:
do something with mystring
只需使用相等运算符而不是in
:
if any (mystring == s for s in mylist)
do something with mystring
运算符“in”可以在序列中找到一个项目,但它对字符串的行为有所不同 - 从 ePython 2.3 IIRC 开始 - 当序列是字符串(或 unicode)时,它也将匹配子字符串。
所以,如果你只是wnat检查一个词是inisde列表, in
完全没有问题-在
if "apple" in ["apple", "pear", "berry"]:
因此,代替if any (mystring in s for s in mylist)
只做if mystring in mylist
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.