[英]python list matching for multiple patterns
我有一个具有字符串元素的python 2-D列表my_list 。 我想找到与pattern_list匹配的嵌套列表,并要删除匹配的嵌套列表。
my_list = [['UserName', 'EmailID', 'NoofLogins', 'Logs'],
['abrretrerfe2', 'abarrett@polarstar.com', 1.0, 'User : Abarrett has logged in successfully. \n'],
['adminadminerfdDcm', 'user@comp-test.in', 2.0, 'User : Admin has Prince comp logged in successfully']
['adminadminerfdDcm', 'user@liveonlinecloud.info', 2.0, 'User : Admin Harry liveonline has logged in successfully']
]
pattern_list = ['comp-test.in', 'liveonlinecloud.info','alertdomain.in']
例如,从上面的列表中,我希望结果列表如下
result_list = [['UserName', 'EmailID', 'NoofLogins', 'Logs'],
['abrretrerfe2', 'abarrett@polarstar.com', 1.0, 'User : Abarrett has logged in successfully. \n']
]
my_list中的第二和第三嵌套列表被删除,因为它们的值与模式之一匹配。 在第一种情况下,comp-test.in被匹配。 在第二种情况下,liveonlinecloud.info匹配。
谁能帮我这个? -感谢您的帮助
the_list = [['UserName', 'EmailID', 'NoofLogins', 'Logs']
['abariettq7g3sab9s2', 'abariett@polarstar.com', 1.0, 'User : Abariett has logged in successfully. $$'],
['adminadswdasdpj362xQ', 'admin@windacademy.us', 1.0, 'User : Admin has logged in successfully. $$ Scan Started Successfully for - Account Name : windacademy.us. $$']
]
valid_pattern = ['started', 'initiated', 'stopped', 'added', 'fetched', 'completed', 'deleted', 'updated', 'disabled']
从the_list
,我只想在比赛中的任何项目,该列表valid_pattern
列表
output_list = [['adminadswdasdpj362xQ', 'admin@windacademy.us', 1.0, 'User : Admin has logged in successfully. $$ Scan Started Successfully for - Account Name : windacademy.us. $$']
]
见output_list
,只有1嵌套列表相匹配的图形元素开始 。 如何获得此输出?
my_list = [['UserName', 'EmailID', 'NoofLogins', 'Logs'],
['abrretrerfe2', 'abarrett@polarstar.com', 1.0, 'User : Abarrett has logged in successfully. \n'],
['adminadminerfdDcm', 'user@comp-test.in', 2.0, 'User : Admin has Prince comp logged in successfully']
['adminadminerfdDcm', 'user@liveonlinecloud.info', 2.0, 'User : Admin Harry liveonline has logged in successfully']
]
pattern_list = ['comp-test.in', 'liveonlinecloud.info','alertdomain.in']
result_list = []
for row in my_list:
for pattern in pattern_list:
if pattern not in row[1]:
result_list.append(row)
在这种情况下,可以使用简单的列表理解:
result_list = [row for row in my_list if not any(p in row[1] for p in pattern_list)]
您可以在不使用正则表达式的情况下做到这一点,我认为模式可以位于嵌套列表中的任何索引上,而不仅仅是1:
result_list = my_list[:]
for l in my_list:
tmp = '_'.join(map(str,l))
for pattern in pattern_list:
if pattern in tmp:
result_list.remove(l)
break
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.