我正在尝试在与另一个列表的子字符串匹配的字符串中找到第一个匹配项。但是,我需要结果从列表中返回一个由','分隔的子字符串。
这是我到目前为止所拥有的。
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/'
这两种方法都给了我一个很好的列表,但它没有排序,并且我无法根据该列表第一次出现。
您应该使用startswith
,因为这是您的目标。 ie
[i for i in text.split(',') for j in match_list if i.startswith(j)]
Out[120]: ['/AAA 123/BBB 234/']