[英]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.