python - TypeError:预期的字符串或类似字节的对象 - 验证电子邮件地址
问题描述
我正在使用正则表达式验证 CSV 文件中的电子邮件地址。我正在使用以下代码来满足上述要求。
@staticmethod
def emailValidReg(input):
with open('simple_rule.txt', 'r') as content_file:
content = content_file.read()
if re.search(content, input):
return True
else:
return False
@staticmethod
def validation(src):
df = pd.read_csv(src)
df = df.copy();
df["Email_validate"] = df["email"].apply(Validator.emailValidReg)
df_filtered = df[df['Email_validate']]
del df_filtered["Email_validate"]
df_filtered.to_csv('email_validator_reg.csv')
i = Validator()
i.validation('test.csv')
simple_rule.txt
[a-zA-Z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-zA-Z-]+\.[a-z]
代码运行时会出现以下情况。
Traceback (most recent call last):
File "E:/RegexExercise/Validator.py", line 57, in <module>
i.validation('sample.csv')
File "E:/RegexExercise/Validator.py", line 43, in validation
df["Email_validate"] = df["email"].apply(Validator.emailValidReg)
File "E:\RegexExercise\venv\lib\site-packages\pandas\core\series.py", line 3848, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype)
File "pandas\_libs\lib.pyx", line 2327, in pandas._libs.lib.map_infer
File "E:/RegexExercise/Validator.py", line 33, in emailValidReg
if re.search(content, input):
File "C:\Users\Local\Programs\Python\Python37-32\lib\re.py", line 183, in search
return _compile(pattern, flags).search(string)
TypeError: expected string or bytes-like object
我使用的 CSV 文件是sample.csv
,正则表达式文件是simple_rule.txt
. py 类是Validator
.
有人可以解释为什么会发生这种情况以及解决问题的提示。我试图阅读和理解给定问题的类似错误,但情况不同,有点难以理解。请帮我!
解决方案
推荐阅读
- ssl - OpenSSL - 在本地系统中工作,但不在其他 LAN 系统中工作 [Intranet]
- magento - 添加到购物车无法使用 magento 版本 2.2.4
- xml - 如何从 XML 元素中删除一个特定的命名空间
- c# - C# - 正则表达式不匹配输入字符串
- excel - Excel 2016 中的高 DPI 感知任务窗格(或 ActiveX 控件)!?如何?
- android - 在有根的 7.x 设备上以编程方式激活热点
- ionic-framework - 如何用 ion-footer 按钮颜色填充 iphoneX 缺口
- amazon-web-services - CloudFormation模板中如何同时使用Sub和GetAtt函数?
- sql - 如何优化视图?
- php - CakePhp 编辑表单不发送帖子数据