TypeError: ожидаемая строка или байтовоподобный объект - проверка адресов электронной почты - PullRequest
0 голосов
/ 03 марта 2020

Я использую для проверки адресов электронной почты из файла 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.

Может кто-нибудь объяснить, почему это происходит, и совет для решения проблемы. Я пытался читать и понимать подобные ошибки, задавая вопросы, но случаи были другими, и это было немного трудно понять. Пожалуйста, помогите мне!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...