TypeError:电子邮件地址应为字符串或字节类对象验证

2024-10-01 02:29:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用正则表达式验证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,regex文件是simple_rule.txt。py类是Validator

有人能解释一下为什么会发生这种情况,并提出解决问题的建议吗。我试图阅读和理解类似的错误给出的问题,但情况不同,这是有点难以理解。请帮帮我


Tags: csvinpydfsearchemaillibline