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

Python提取HTML数据写CSV时如何按邮箱去重列表内重复人员条目

实现方案

原有代码问题

  • 正则表达式语法错误:re.compile(r'+.')属于非法写法,+作为量词必须跟在匹配规则后,不能放在开头,且本场景无需使用正则,直接取订单的邮箱字段对比即可
  • 判断逻辑完全错误:你构造的包含正则对象的列表不可能匹配到rows中存储的订单数据,无法触发去重逻辑
  • 语法错误:list.append()仅接收1个参数,直接传入number, name, email三个参数会抛出类型错误,需要先封装为列表再传入

推荐实现(适配超大数据量场景)

你需要处理超大型HTML文件,数据量较大,使用set存储已存在的邮箱,查询效率为O(1),远高于每次遍历列表的O(n)效率,实现代码如下:

# 初始化已有邮箱集合,从现有orders提取,如果你的rows初始数据源和orders不一致,换成rows即可
existing_emails = set(order[2] for order in orders)
# 初始化结果列表为现有订单
rows = orders.copy()

# 处理新订单
number = '10004'
name = 'Jane'
email = 'jane@example.com'

# 邮箱不存在才添加
if email not in existing_emails:
    rows.append([number, name, email])
    existing_emails.add(email)

小数据量简化实现

如果数据量较小,不需要考虑性能,也可以直接遍历现有列表判断:

rows = orders.copy()
number = '10004'
name = 'Jane'
email = 'jane@example.com'

email_exist = False
for order in rows:
    if order[2] == email:
        email_exist = True
        break

if not email_exist:
    rows.append([number, name, email])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:06:04