Python - заменить записи в списке общим шаблоном - PullRequest
0 голосов
/ 18 марта 2019

У меня есть список различных URL-адресов в Python. Я пытаюсь извлечь доменные имена из этого.

list1 = ['wwww.google.com.my','www.yahoo.co.jp','www.facebook.com']

Я пытаюсь преобразовать вышеупомянутое так, чтобы окончательный результат был как ниже:

list1 = ['www.google.com','www.yahoo.com','www.facebook.com']

Ответы [ 4 ]

1 голос
/ 18 марта 2019

Разделить на .com и объединить с .com, поскольку предполагается, что вы хотите, чтобы все они заканчивались следующим образом:

list1 = ['wwww.google.com.my','www.yahoo.co.jp','www.facebook.com']

print([e.split(".co")[0] + ".com" for e in list1])

ВЫВОД :

['wwww.google.com', 'www.yahoo.com', 'www.facebook.com']
0 голосов
/ 18 марта 2019

Я добавил еще несколько URL в список, чтобы охватить все возможные типы,

list1 = ['wwww.google.com.my','www.yahoo.co.jp','www.facebook.com',
'https://stackoverflow.com/questions/','https://google.co.in',
'https://stackoverflow.co.uk/questions/','www.stackoverflow.co.uk/questions/']

Код выглядит следующим образом,

new_list=[]

list1 = ['wwww.google.com.my','www.yahoo.co.jp','www.facebook.com',
'https://stackoverflow.com/questions/','https://google.co.in',
'https://stackoverflow.co.uk/questions/','www.stackoverflow.co.uk/questions/']

for item in list1:
    if(item[:4]!='http'):
        url1='www.'+item.split(".")[1]+'.com'
        if(item.split('/')[0])==item:
            new_list.append(url1)
        else:
            length=len(item.split('/'))
            url2=''
            for i in range(1,length):
                url2=url2+'/'+item.split('/')[i]
            url1=url1+url2
            new_list.append(url1)
    if(item[:4]=='http'):
        url1='www.'+item.split('://')[1]
        url1='www.'+url1.split('.')[1]+'.com'
        if(item.split('/'))[2]==item[8:]:
            new_list.append(url1)
        else:
            length=len(item.split('/'))
            url2=''
            for i in range(3,length):
                url2=url2+'/'+item.split('/')[i]
            url1=url1+url2
            new_list.append(url1)

new_list в приведенном выше коде следует рассматривать как вывод, и выглядит следующим образом:

In [1]:new_list
Out[1]: 
['www.google.com',
 'www.yahoo.com',
 'www.facebook.com',
 'www.stackoverflow.com/questions/',
 'www.google.com',
 'www.stackoverflow.com/questions/',
 'www.stackoverflow.com/questions/']

Дайте мне знать, достаточно ли это для вас!

Редактировать: Поскольку этот запрос основан на конкретном сценарии использования, общего решения не существует, поэтому я не обращался к адресам, использующим .gov или .edu и т. Д. Эти варианты использования могут быть добавлены к приведенному выше коду по мере необходимости. Кроме того, это может изменить адрес и вывести глобальный .com URL-адрес на веб-сайт, который может не существовать глобально.

0 голосов
/ 18 марта 2019

Вы можете использовать регулярные выражения для анализа входных данных и построения желаемого фактического результата.

Например, это регулярное выражение находит домен и устанавливает его в www. domain .comшаблон, есть много других шаблонов, которые могут работать.

import re
list2 = [re.sub(r'w*\.?(\w+)\..*', r'www.\1.com', x) for x in list1]
0 голосов
/ 18 марта 2019

Предполагая, что вы не хотите менять .co на .com (с чего бы вы?), Вы можете попробовать:

list2 = ['.'.join(url.split('.')[:3]) for url in list1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...