Я использую для проверки адресов электронной почты из файла 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
.
Может кто-нибудь объяснить, почему это происходит, и совет для решения проблемы. Я пытался читать и понимать подобные ошибки, задавая вопросы, но случаи были другими, и это было немного трудно понять. Пожалуйста, помогите мне!