В текстовом файле найти строки, содержащие почтовые адреса 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)
→ Ссылка