Использование регулярных выражений для поиска и замены адресов электронной почты

#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. Спасибо за вашу помощь