簡體   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