繁体   English   中英

防止“if”python中的部分字符串匹配)

[英]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 ,而不是appapple 问题是mystringmylist部分匹配正在通过。

即在上面的示例中,如果mystringapp它正在传递而我也不想要它。 我知道这是微不足道的,所以很抱歉。

我认为你应该这样做

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM