繁体   English   中英

python列表匹配多种模式

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM