Python-用公共模式替换列表中的条目
我有一个不同URL的python列表。我正试图从中提取域名Python-用公共模式替换列表中的条目,python,regex,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'] 按.com拆分并与.com连接,因为假定您希望它们都以这样的方式结束: list1 = ['wwww.google.com.my',
list1 = ['wwww.google.com.my','www.yahoo.co.jp','www.facebook.com']
我正在尝试转换上述内容,以便最终输出如下:
list1 = ['www.google.com','www.yahoo.com','www.facebook.com']
按.com拆分并与.com连接,因为假定您希望它们都以这样的方式结束:
list1 = ['wwww.google.com.my','www.yahoo.co.jp','www.facebook.com']
print([e.split(".co")[0] + ".com" for e in list1])
输出:
假设您不想将.co改为.com,那么您可以尝试:
list2 = ['.'.join(url.split('.')[:3]) for url in list1]
您可以使用正则表达式来解析输入并构建所需的实际结果 例如,这个正则表达式找到域并将其植入www.domain.com模式中,有很多其他模式可以使用
import re
list2 = [re.sub(r'w*\.?(\w+)\..*', r'www.\1.com', x) for x in list1]
我在列表中添加了一些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)
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/']
上述代码中的新_列表将被视为输出,如下所示:
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)
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等的地址。这些用例可以根据需要附加到上面的代码中。
此外,这可能会更改地址,并将一个global.com url输出到一个可能不全局存在的网站。这对于Python中的list是无效的语法。您尝试过什么?显示你的代码。尝试搜索正则表达式。www.yahoo.co.jp到底是如何变成www.yahoo.com的?我想知道你从哪里得到这些URL的。以…结尾的域名。我的?www.yahoo.co.jp可能是雅虎日本分公司的有效域名,那么为什么要将其切换到.com?哇,真的吗?一个只适用于.com/.co URL的解决方案?@Aran-Fey。看看这个问题。因为OP希望www.yahoo.co.jp访问www.yahoo.com。你还有什么建议?返回www.yahoo.co而不是“www.yahoo.com”我知道。我写道,在我看来,没有必要将其更改为.com,因为.co仍然是一个有效的域。我在等待OP对这件事的澄清。但不是想要的输出。这个打印['www.google.com.my','www.yahoo.co.jp','www.facebook.com']谢谢,我编辑了我的答案,用\W替换了\W,这样周期就不会被吞没了。