[英]How to filter out list elements based on if they contain a substring from another list in Python
我有一個字符串列表,例如所謂的“main_list”:
['Hello_Kitty [data]', 'abc_xyz [data]']
和另一個名為“ids”的列表
[abc, xyz]
如果在行條目 (contents_list) 中找到“數據”只是一個字符串列表,我通過查看“contents_list”並附加到 main_list 來創建此列表。
for entry in contents_list:
if 'data' in entry:
main_list.append(entry)
如果它包含來自 substring 中的“ids”的 id,我如何過濾掉不是 append 的任何內容到 main_list 的條目?
我想結束這個:
['Hello_Kitty [data]']
main_list = ['Hello_Kitty [data]', 'abc_xyz [data]']
ids = ['abc', 'xyz']
filtered_output=[]
for item in main_list:
blocked=False
for id in ids:
if id in item:
blocked=True
if blocked == False:
filtered_output.append(item)
Output:
['Hello_Kitty [data]']
在追加之前,您需要檢查每個 id 是否在字符串中。 我首選的方法是使用列表推導。
我將使用列表推導創建一個包含字符串包含的所有 id 的列表。 如果此列表的長度大於 0,則不附加該字符串。
[id for id in ids if id in entry]
將是列表理解。 對於 id 的每個元素,這將檢查該元素是否是條目的 substring。 如果是,則該 id 進入列表理解。
我將使用條件len( [id for id in ids if id in entry] ) == 0
和另一個 if 來完成工作。 如果長度為 0,則沒有 id 是 substring 的條目。
for entry in contents_list:
if 'data' in entry:
if len( [id for id in ids if id in entry] ) == 0:
main_list.append(entry)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.