我有两个文本文件,我已将它们转换为列表。 List1 的行如下所示:
'U|blah|USAA032812134||blah|blah|25|USAA032812134|blah|A||4||blah|2019-05-28 12:54:59|blah|123456||blah'
list2 的行如下所示:
['smuspid\n', 'USAA032367605\n', 'USAA032367776\n', 'USAA044754265\n', 'USAA044754267\n']
我想返回 list1 中与 list2 匹配的每一行。我尝试使用正则表达式来实现此目的:
found = []
check = re.compile('|'.join(list2))
for elem in list1:
if check.match(elem):
found.append(elem)
但是我上面的代码返回一个空列表。有什么建议吗?
最佳答案
我想你可以在没有正则表达式的情况下做到这一点:
方法1
list1 = ['U|blah|USAA032812134||blah|blah|25|USAA032812134|blah|A||4||blah|2019-05-28 12:54:59|blah|123456||blah']
list2 = ['|USAA032812134', '|USAA0328121304', '|USAA032999812134']
found = []
for i in list1:
for j in list2:
if j in i:
found.append(j)
print(found)
输出1
['|USAA032812134']
<小时/>
使用列表推导式的方法 2
list1 = ['U|blah|USAA032812134||blah|blah|25|USAA032812134|blah|A||4||blah|2019-05-28 12:54:59|blah|123456||blah']
list2 = ['|USAA032812134', '|USAA0328121304', '|USAA032999812134', 'blah']
print([j for i in list1 for j in list2 if j in i])
输出2
['|USAA032812134', 'blah']
<小时/>
方法 3:strip()
用于新行
您可以简单地将strip()
和append()
添加到您的found
列表中:
list1 = ['U|blah|USAA032812134||blah|blah|25|USAA032812134|blah|A||4||blah|2019-05-28 12:54:59|blah|123456||blah']
list2 = ['smuspid\n', 'USAA032812134\n', 'USAA032367605\n', 'USAA032367776\n',
'USAA044754265\n', 'USAA044754267\n']
found = []
for i in list1:
for j in list2:
if j.strip() in i:
found.append(j.strip())
print(found)
输出3
['USAA032812134']
关于Python通过另一个列表解析字符串列表并返回匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58775165/