Python-使用常见模式替换列表中的条目

时间:2019-03-18 08:53:01

标签: python regex

我有一个包含不同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 个答案:

答案 0 :(得分:1)

.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']

答案 1 :(得分:0)

假设您不想将.co更改为.com(为什么?),则可以尝试:

list2 = ['.'.join(url.split('.')[:3]) for url in list1]

答案 2 :(得分:0)

您可以使用正则表达式来解析输入并构建所需的实际结果。

例如,此正则表达式查找域并将其植入到www。 .com模式中,还有很多其他可以使用的模式。

import re
list2 = [re.sub(r'w*\.?(\w+)\..*', r'www.\1.com', x) for x in list1]

答案 3 :(得分:0)

我在列表中添加了更多网址,以解决所有可能的类型,

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网址。