簡體   English   中英

使用列表理解過濾字符串列表

[英]Filter list of strings using list comprehension

>>> li = ["a b self", "mpilgrim", "foo c", "b", "c", "b", "d", "d"]
>>> condition = ["b", "c", "d"]
>>> [elem for elem in li if elem in condition]
['b', 'c', 'b', 'd', 'd']

但是有沒有辦法返回

['a b self','foo c','b', 'c', 'b', 'd', 'd']

由於 b 和 c 包含在'ab self''foo c' ,我希望代碼也返回這兩個。

假設代碼需要檢索包含任何條件字符串的所有字符串:

[elem for elem in li if any(c in elem for c in condition)]

如果需要完全匹配條件:

[elem for elem in li if
 any(re.search('(^|\s){}(\s|$)'.format(c), elem) for c in condition)]

編輯:這可以簡化為單個預定義的正則表達式:

predicate = re.compile('(^|\s)({})(\s|$)'.format('|'.join(condition)))

[elem for elem in li if predicate.search(elem)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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