Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python通过另一个列表解析字符串列表并返回匹配项_Python_Regex_String_Text - Fatal编程技术网

Python通过另一个列表解析字符串列表并返回匹配项

Python通过另一个列表解析字符串列表并返回匹配项,python,regex,string,text,Python,Regex,String,Text,我有两个文本文件,我已经变成了列表。列表1中的行如下所示: 'U|blah|USAA032812134||blah|blah|25|USAA032812134|blah|A||4||blah|2019-05-28 12:54:59|blah|123456||blah' ['smuspid\n', 'USAA032367605\n', 'USAA032367776\n', 'USAA044754265\n', 'USAA044754267\n'] 清单2的行如下所示: 'U|blah|USAA

我有两个文本文件,我已经变成了列表。列表1中的行如下所示:

'U|blah|USAA032812134||blah|blah|25|USAA032812134|blah|A||4||blah|2019-05-28 12:54:59|blah|123456||blah'
['smuspid\n', 'USAA032367605\n', 'USAA032367776\n', 'USAA044754265\n', 'USAA044754267\n']
清单2的行如下所示:

'U|blah|USAA032812134||blah|blah|25|USAA032812134|blah|A||4||blah|2019-05-28 12:54:59|blah|123456||blah'
['smuspid\n', 'USAA032367605\n', 'USAA032367776\n', 'USAA044754265\n', 'USAA044754267\n']
我想返回列表1中与列表2匹配的每一行。我已经尝试使用正则表达式来实现此目的:

found = []
check = re.compile('|'.join(list2))
for elem in list1:
    if check.match(elem):
        found.append(elem)

但是我上面的代码返回了一个空列表。有什么建议吗?

我想不用正则表达式也可以:

方法1 产出1
方法2使用列表理解 产出2
方法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
你想要匹配或精确相等。或者,列表2的格式与我之前认为的不同,我编辑了这个问题以显示元素的外观。这是否会更改您的代码,因为在我尝试此方法时,此方法仍然返回空列表。
['|USAA032812134', 'blah']
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)
['USAA032812134']