首页 > 解决方案 > Python从列表中删除相似的项目

问题描述

使用 python,在下面的列表中,我需要删除与国家代码重复的电话号码。

['(+44)45860787163','(+27)16345860787','45860787163','16345860787']

我尝试使用笛卡尔积和“in”运算符来比较字符串,但似乎没有任何效果。我想保留完整的电话号码。

['(+44)45860787163','(+27)16345860787']

标签: pythonlistreducesimilarity

解决方案


使用正则表达式,您可以提取您需要的部分,然后使用字典,您可以将数字与其前缀配对(并避免覆盖前缀)

value = '(+44)45860787163,(+27)16345860787,45860787163,16345860787'
phones = {}

for phone, prefix, number in re.findall(r"((\(\+\d+\))?(\d+))", value):
    if prefix != "" or number not in phone:
        phones[number] = prefix

result = ",".join(v + k for k, v in phones.items())
print(result)  # (+44)45860787163,(+27)16345860787

推荐阅读