[英]Check if substring is in a list of strings?
我之前已經找到了這個問題的一些答案,但是對於當前的Python版本來說它們似乎已經過時了(或者至少它們對我不起作用)。
我想檢查字符串列表中是否包含子字符串。 我只需要布爾結果。
我發現這個解決方案:
word_to_check = 'or'
wordlist = ['yellow','orange','red']
result = any(word_to_check in word for word in worldlist)
從這段代碼我希望得到一個True
價值。 如果單詞是“der”,那么輸出應為False
。
但是,結果是生成器函數,我找不到獲取True
值的方法。
任何的想法?
您可以從__builtin__
導入any
,以防它被其他any
替換:
>>> from __builtin__ import any as b_any
>>> lst = ['yellow', 'orange', 'red']
>>> word = "or"
>>> b_any(word in x for x in lst)
True
請注意,在Python 3中__builtin__
已重命名為builtins
。
您使用any()發布的代碼是正確的,除非您在某處重新定義它,否則應該可以正常工作。
也就是說,通過在單個組合字符串上使用子字符串搜索,可以獲得簡單快速的解決方案:
>>> wordlist = ['yellow','orange','red']
>>> combined = '\t'.join(wordlist)
>>> 'or' in combined
True
>>> 'der' in combined
False
這應該比使用任何方法快得多 。 連接字符可以是在詞表中的一個詞中不出現的任何字符。
您可以使用next
:
colors = ['yellow', 'orange', 'red']
search = "or"
result = next((True for color in colors if search in color), False)
print(result) # True
要顯示包含子字符串的字符串:
colors = ['yellow', 'orange', 'red']
search = "or"
result = [color for color in colors if search in color]
print(result) # Orange
此外,如果有人想檢查字典的任何值是否作為字符串列表中的子字符串存在,可以使用:
list_a = [
'Copy of snap-009ecf9feb43d902b from us-west-2',
'Copy of snap-0fe999422014504b6 from us-west-2',
'Copy of snap-0fe999422014cscx504b6 from us-west-2',
'Copy of snap-0fe999422sdad014504b6 from us-west-2'
]
dict_b = {
'/dev/xvda': 'snap-0fe999422014504b6',
'/dev/xvdsdsa': 'snap-sdvcsdvsdvs'
}
for b1 in dict_b.itervalues():
result = next( ("found" for a1 in a if b1 in a1), "not found")
print result
它打印
not found
found
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.