如果列表包含Python中另一个列表的子字符串,则查找列表中的第一个匹配项

问题描述 投票:1回答:1

我正在尝试在与另一个列表的子字符串匹配的字符串中找到第一个匹配项。但是,我需要结果从列表中返回一个由','分隔的子字符串。

这是我到目前为止所拥有的。


match_list = ['/AAA 123/' , '/ABC 444/']

text = '/AAA 123/BBB 234/,/CC 345/XXX 999/,/ABC 110/BBD 678/KLM 888/,/AAA 111/ABX 777/ABC 444/'
text_list = text.split(',')

# For loop method
for item_to_match in match_list:
    for line in text_list:
        if item_to_match in line:
            print(line)

# List comprehension            
matched_strings_list = [line for line in text_list for item_to_match in match_list if item_to_match in line]

Current result: '/AAA 111/ABX 777/ABC 444/', '/AAA 123/BBB 234/'
Desired result: '/AAA 123/BBB 234/'

这两种方法都给了我一个很好的列表,但它没有排序,并且我无法根据该列表第一次出现。

python-3.x list string-matching
1个回答
0
投票

您应该使用startswith,因为这是您的目标。 ie

[i for i in text.split(',') for j in match_list if i.startswith(j)]
Out[120]: ['/AAA 123/BBB 234/']
© www.soinside.com 2019 - 2024. All rights reserved.