Как вырезать результат списка
Дан результат получения списка списков - я написал вот такой код:
def check_elemnts_list():
for i in my_list():
print(i.split(' ')[-1:])
Получаю вот такой результат
['"remerplumbing-com.relay1g.spamh.com"]]']
['[]']
['"psd1-org.mail.protection.outlook.com"]]']
['"avionte-com.mail.protection.outlook.com"]]']
['"lastmx.spamexperts.net"]]']
['"mx30.mailspamprotection.com"]]']
['"grupocarval-com.mail.protection.outlook.com"]]']
['"planttape-com.mail.protection.outlook.com"]]']
['"alt3.aspmx.l.google.com"]]']
['"mx30.mailspamprotection.com"]]']
['[]']
['"mail2.qlc.co.in"]]']
['"mail.aherhn.org"]]']
['"aureon-com.mail.protection.outlook.com"]]']
['"thomascookairlines-com.mail.protection.outlook.com"]]']
['"yourcourts-com.mail.protection.outlook.com"]]']
То есть, мне нужно получить вот такой результат:
outlook.com
outlook.com
pphosted.com
arsmtp.com
Подскажите пожалуйста, как это можно сделать?
Ответы (2 шт):
Автор решения: Andy Pavlov
→ Ссылка
Есть неплохая библиотека получения домена tld. Ее можно применить для парсинга url.
import re
from tld import get_fld
hosts_list = [['"remerplumbing-com.relay1g.spamh.com"]]'],
['[]'],
['"psd1-org.mail.protection.outlook.com"]]'],
['"avionte-com.mail.protection.outlook.com"]]'],
['"lastmx.spamexperts.net"]]'],
['"mx30.mailspamprotection.com"]]'],
['"grupocarval-com.mail.protection.outlook.com"]]'],
['"planttape-com.mail.protection.outlook.com"]]'],
['"alt3.aspmx.l.google.com"]]'],
['"mx30.mailspamprotection.com"]]'],
['[]'],
['"mail2.qlc.co.in"]]'],
['"mail.aherhn.org"]]'],
['"aureon-com.mail.protection.outlook.com"]]'],
['"thomascookairlines-com.mail.protection.outlook.com"]]'],
['"yourcourts-com.mail.protection.outlook.com"]]'],]
hosts_list = list(filter(bool, map(lambda x: re.findall('[\w\s.-]+', x[0]), hosts_list))) # Чистим мусор
print(list(map(lambda x: get_fld(x[0], fix_protocol=True), hosts_list)))
# ['spamh.com', 'outlook.com', 'outlook.com', 'spamexperts.net', 'mailspamprotection.com', 'outlook.com', 'outlook.com', 'google.com', 'mailspamprotection.com', 'qlc.co.in', 'aherhn.org', 'outlook.com', 'outlook.com', 'outlook.com']
Автор решения: Violet
→ Ссылка
без дополнительных библиотек
a = (['"remerplumbing-com.relay1g.spamh.com"]]'],
['[]'],
['"psd1-org.mail.protection.outlook.com"]]'],
['"avionte-com.mail.protection.outlook.com"]]'],
['"lastmx.spamexperts.net"]]'],
['"mx30.mailspamprotection.com"]]'],
['"grupocarval-com.mail.protection.outlook.com"]]'],
['"planttape-com.mail.protection.outlook.com"]]'],
['"alt3.aspmx.l.google.com"]]'],
['"mx30.mailspamprotection.com"]]'],
['[]'],
['"mail2.qlc.co.in"]]'],
['"mail.aherhn.org"]]'],
['"aureon-com.mail.protection.outlook.com"]]'],
['"thomascookairlines-com.mail.protection.outlook.com"]]'],
['"yourcourts-com.mail.protection.outlook.com"]]'])
x = []
y = []
for i in a:
# noinspection PyBroadException
try:
x.append(i[0].replace(']]', '').replace('"', '').split('.')[-2])
y.append(i[0].replace(']]', '').replace('"', '').split('.')[-1])
except Exception:
pass
z = ''
for a, b in zip(x, y):
z = z + f'{a}.{b}, '
print(z[:-2])
>>> spamh.com, outlook.com, outlook.com, spamexperts.net, mailspamprotection.com, outlook.com, outlook.com, google.com, mailspamprotection.com, co.in, aherhn.org, outlook.com, outlook.com, outlook.com
