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

如何在Python中按Emailtype为W的条件验证邮箱

问题:仅验证Emailtype为W的邮箱格式

数据示例

Person Id - EmailID- Email - Emailtype-
-18583-5435-natasha@gmail.com-P-
-13533-23145-john@georgeschool.com-W-
-35424-5784-smithedwardshotmail.com-P-
-35424-5785-smith.edwards@hardvardsuni.com-W-
-47815-8794-jill.townsendJohnsUniverty.com-W-

需求

对Email字段进行邮箱格式验证,但仅针对Emailtype为W(工作邮箱)的记录,非W类型的记录不做验证,保留原Email值。

现有代码及问题

当前代码能对所有Email做验证,但无法实现仅验证W类型的逻辑,尝试添加条件时出现语法错误:

import re
import pandas as pd

data = pd.read_csv("data.csv", sep = ';',  error_bad_lines=False ) #Read file
value = data.iat[1,1] # load 1st value from table

data['EMail'] = data['EMail'].where(data['']data['EMail'].str.contains(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b') , 'Email field is invalid')
#check if any of the emails fields are invalid

# 尝试添加条件但报错的代码
#data['EZMail'] = data['EMail'].where(data['']data['EMail'].str.contains(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b') && data['']data['Emailtype'].str.contains('W') , 'Email field is invalid')  

data.to_csv(f'{value}DATA.csv', sep= ';', date_format='%Y%m%d', index=False)
#write data to file

预期输出

- Person Id - EmailID- Email - Emailtype-
-18583-5435-natasha@gmail.com-P-
-13533-23145-john@georgeschool.com-W-
-35424-5784-smithedwardshotmail.com-P-
-35424-5785-smith.edwards@hardvardsuni.com-W-
-47815-8794-E-Mail field is invalid-W-

解决方案

错误原因

之前的尝试存在两个语法问题:

  1. 多余的data['']写法,属于无效语法
  2. Python中逻辑与运算符是&而非&&

修正后的完整代码

import re
import pandas as pd

# 读取数据,注意确认分隔符与实际文件匹配,示例数据用'-',可根据实际调整sep参数
data = pd.read_csv("data.csv", sep=';', error_bad_lines=False)
value = data.iat[1, 1]

# 定义邮箱格式验证正则表达式
email_regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'

# 构建条件:要么是非工作邮箱(不验证),要么是工作邮箱且格式符合
validation_condition = (data['Emailtype'] != 'W') | data['Email'].str.contains(email_regex, na=False)

# 应用条件:符合条件保留原Email,不符合则替换为提示文本
data['Email'] = data['Email'].where(validation_condition, 'E-Mail field is invalid')

# 保存处理后的数据
data.to_csv(f'{value}DATA.csv', sep=';', date_format='%Y%m%d', index=False)

关键说明

  • 条件逻辑:使用|(逻辑或)实现“非W类型直接保留,W类型需符合格式才保留”的需求
  • 空值处理:na=False确保遇到空值时不会抛出异常,统一按不符合处理
  • 正则适配:保留原有的邮箱验证规则,确保格式判断准确
  • 输出匹配:替换文本与预期输出一致,保证结果符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:51:03