python - Python从列表中删除相似的项目
问题描述
使用 python,在下面的列表中,我需要删除与国家代码重复的电话号码。
['(+44)45860787163','(+27)16345860787','45860787163','16345860787']
我尝试使用笛卡尔积和“in”运算符来比较字符串,但似乎没有任何效果。我想保留完整的电话号码。
['(+44)45860787163','(+27)16345860787']
解决方案
使用正则表达式,您可以提取您需要的部分,然后使用字典,您可以将数字与其前缀配对(并避免覆盖前缀)
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
推荐阅读
- java - java中有没有像setw()这样的内置函数?如果不是,我该如何格式化?
- java - 在成功的 FormData POST 请求上获取“404 Not Found”
- javascript - 从 API 搜索中获取随机结果
- c# - C# - Visual Studio 中从 SQL 导出数据到 TreeView 的问题
- python - 加快 PostgreSQL/SQLAlchemy 中的 JSONB 全文搜索
- android - 在 ExoPlayer 播放之前预缓冲视频
- javascript - 在数字和字符之间插入空格
- amazon-web-services - 如何将 API Gateway 放在 ALB 前面,然后再放在 ECS/EC2 上?
- mysql - 即使条件为假,mySQL 查询也会返回数据
- python - 如何创建 spark udf 以将浮点数插值到 INT 以及如何编写比我做的更好的逻辑