#python
#python
Вопрос:
Новичок в Python и хотел бы использовать его с регулярными выражениями для работы со списком из более чем 5 тысяч адресов электронной почты. Мне нужно изменить инкапсуляцию каждого адреса в кавычки. Я использую b[A-Z0-9._% -] @[A-Z0-9.-] .[A-Z]{2,}b
для идентификации каждого адреса электронной почты. Как бы я заменил текущую запись user@email.com для «user@email.com » добавление кавычек вокруг каждого из 5 тысяч адресов электронной почты?
Комментарии:
1.
re.sub
Ответ №1:
Вы можете использовать модуль re.sub и использовать обратную ссылку следующим образом:
>>> a = "this is email: someone@mail.com and this one is another email foo@bar.com"
>>> re.sub('([A-Za-z0-9._% -] @[A-Za-z0-9.-] .[A-Za-z]{2,})', r'"1"', a)
'this is email: "someone@mail.com" and this one is another email "foo@bar.com"'
ОБНОВЛЕНИЕ: Если у вас есть файл, в котором требуется заменить электронные письма в каждой его строке, вы можете использовать readlines()
вот так:
import re
with open("email.txt", "r") as file:
lines = file.readlines()
new_lines = []
for line in lines:
new_lines.append(re.sub('([A-Za-z0-9._% -] @[A-Za-z0-9.-] .[A-Za-z]{2,})', r'"1"', line))
with open("email-new.txt", "w") as file:
file.writelines(new_lines)
email.txt:
this is test@something.com and another email here foo@bar.com
another email abc@bcd.com
still remaining someone@something.com
email-new.txt (после запуска кода):
this is "test@something.com" and another email here "foo@bar.com"
another email "abc@bcd.com"
still remaining "someone@something.com"
Комментарии:
1. Я забыл упомянуть, что у меня есть текстовый файл, хранящийся локально с каждым адресом электронной почты в отдельных строках, которые мне нужно загрузить. Итак, в основном я выполняю чтение и замену файла.
2. спасибо, что сработало отлично. У меня всего лишь еще один вопрос, и я уйду от вас. Как бы я добавил к каждому адресу «mail =». Мне только что сказали, что это будет использоваться для поиска LDAP для импорта формата файла.
3. @the1fan просто измените
r'"1"'
наr'mail="1"'
в строке, начинающейся сnew_lines.append(re.sub...
4. Спасибо за вашу помощь