簡體   English   中英

檢查substring是否在字符串列表中?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM