首页 > 解决方案 > 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.

有人可以解释为什么会发生这种情况以及解决问题的提示。我试图阅读和理解给定问题的类似错误,但情况不同,有点难以理解。请帮我!

标签: pythonregexcsv

解决方案


推荐阅读