В текстовом файле найти строки, содержащие почтовые адреса Python
Найдите в файле (файл находится в сети Интернет): строки, содержащие почтовые адреса. Я хз, я ноль и не вдупляю, кто-то может исправить и пояснить pls?
import re
import urllib.request
url = "http://dfedorov.spb.ru/python/files/mbox-short.txt"
with urllib.request.urlopen(url) as webpage:
for line in webpage:
line = line.strip()
line = line.decode('utf-8')
url_pattern = r'http://[\S]+'
urls = re.findall(url_pattern, line)
print(urls)
Ответы (3 шт):
Автор решения: Victor VosMottor
→ Ссылка
Как бы вы перепутали почтовые адреса с URL адресами. Просто замените регекс:
from re import findall
import urllib.request
url = "http://dfedorov.spb.ru/python/files/mbox-short.txt"
with urllib.request.urlopen(url) as webpage:
for line in webpage:
line = line.strip()
line = line.decode('utf-8')
addresses = "^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"
print(findall(addresses, line))
Автор решения: gil9red
→ Ссылка
У вас регулярка была для поиска URL, а не почтовых адресов, плюс найденные адреса нужно собирать.
Попробуйте:
import re
import urllib.request
pattern_email = re.compile(r'[\w.-]+@[\w.-]+(?=\.[\w]+)+')
emais = []
url = "http://dfedorov.spb.ru/python/files/mbox-short.txt"
with urllib.request.urlopen(url) as webpage:
for line in webpage:
line = line.strip()
line = line.decode('utf-8')
urls = pattern_email.findall(line)
if urls:
emais += urls
print(emais)
# ['[email protected]', '[email protected]', ...
Автор решения: Serhiyy
→ Ссылка
Решил чучуть буржуазным способом, но решил:
import re
import urllib.request
a = []
url = "http://dfedorov.spb.ru/python/files/mbox-short.txt"
with urllib.request.urlopen(url) as webpage:
for line in webpage:
line = line.strip()
line = line.decode('utf-8')
url_pattern = r'http://[\S]+'
urls = ''.join(re.findall(url_pattern, line) )
a.append(urls)
print(a)
for x in a:
if len(x) > 0:
print(x)