Python разбирает список строк через другой список и возвращает совпадения - PullRequest
1 голос
/ 09 ноября 2019

У меня есть два текстовых файла, которые я превратил в списки. У 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 Ответ

2 голосов
/ 09 ноября 2019

Я полагаю, что вы можете сделать это без регулярного выражения:

Метод 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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...