创建唯一名称列表[已关闭]

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

我有一个字符串列表 - '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']
python string list
1个回答
0
投票
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'}

© www.soinside.com 2019 - 2024. All rights reserved.