首页 > 解决方案 > 提取两个列表中的匹配子串

问题描述

如果我有两个字符串列表(其中两个列表包含相同数量的元素),例如:

A = ["abc-foo", "abc-bar", "abc-oof", "abc-huh"]

B = ["cde-foo", "cde-bar", "cde-oof", "cde-huh"]

如何获取包含跨元素匹配字符串的列表?

C = ["foo", "bar", "oof", "huh"]

编辑:修改示例。一般来说,我不知道字符串的不匹配部分会有多长时间。我也不知道它们是如何划分的。

我已经看过使用交叉点,但如果我没记错的话,这只有在两个列表中的整个字符串相同时才有效。

标签: pythonstring

解决方案


这是你要找的吗?

A = ["abc-foo", "abc-bar", "abc-foo2", "abc-bar2"]

B = ["cde-foo", "cde-bar", "cde-foo2", "cde-bar2"]

print([i for x,y in zip(A,B) for i in x.split([i for i in x if not i.isalpha()][0]) if i in y])
['foo', 'bar', 'foo2', 'bar2']

推荐阅读