You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则提取字符串Item项时如何去除重复元素

问题根因

你当前的代码存在两个核心问题:

  • 拆分后硬编码截取固定位置字符的逻辑容错性极差,一旦Item和编号之间的空格数量变化、编号位数变化,就会出现截取错误
  • 没有加入去重逻辑,重复出现的Item编号会被直接追加到结果列表中,无法满足去重要求
可直接运行的正确实现

推荐直接用正则匹配所有符合格式的Item编号片段,再做保序去重,逻辑更严谨也更简洁:

import re

a = "Item 1.01    Entry the party thereto Item 2.02 Exit Item 4.02 Please go from Item 1.01 Item 5.06 lets have some party "
# 精准匹配所有「Item + 任意长度空格 + x.xx格式编号」的片段
all_items = re.findall(r"Item\s+\d+\.\d+", a)
# Python 3.7+ 字典默认保留插入顺序,可直接实现保序去重
result = list(dict.fromkeys(all_items))

print(result)
# 输出:['Item 1.01', 'Item 2.02', 'Item 4.02', 'Item 5.06']
兼容低版本Python的去重写法

如果你使用的Python版本低于3.7(字典不保证插入顺序),可以用集合标记已出现的元素实现保序去重,全版本通用:

result = []
exist_record = set()
for item in all_items:
    if item not in exist_record:
        exist_record.add(item)
        result.append(item)

内容的提问来源于stack exchange,提问作者Saurabh Bulandani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:39:21