我有一个字符串列表 - 'starting-list'。元素中的最后一个字母代表一个值。另一部分代表一个名字。我想创建一个具有唯一名称的列表。
我不能以任何直接的方式使用“-”作为分割,因为它并不总是最后一个。分割“-”的位置因情况而异。
我的一个想法是找到开头匹配的元素。然后删除所有元素不相同的部分。但我不知道如何在代码中执行此操作。
有什么想法吗?
starting_list = ['XX-VAL1',
'XX-VAL-2',
'OPP-VAL-1',
'OPP-VAL2',
'O-PP-VAL1',
'O-PP-VAL2',
'O-PP-VAL3'
'PO-VAL1',
'PO-L-VAL-1',
'PO-L-VAL2',
'RUI-O-VAL1',
'RUI-A-VAL1',
'RUI-O-VAL2',
'RUI-A-VAL2',]
target_list = ['XX', 'OPP', 'O-PP', 'PO', 'RUI-A', 'RUI-B']
import re
regex_pattern = r"((\w+)([-\w+])*)-VAL[-]?\d+"
starting_list = ['XX-VAL1',
'XX-VAL-2',
'OPP-VAL-1',
'OPP-VAL2',
'O-PP-VAL1',
'O-PP-VAL2',
'O-PP-VAL3',
'PO-VAL1',
'PO-L-VAL-1',
'PO-L-VAL2',
'RUI-O-VAL1',
'RUI-A-VAL1',
'RUI-O-VAL2',
'RUI-A-VAL2']
result = set()
for item in starting_list:
match = re.match(regex_pattern, item)
if match:
result.add(match.group(1))
print(result)
{'XX', 'PO', 'PO-L', 'RUI-O', 'RUI-A', 'OPP', 'O-PP'}