2024-04-20 15:37:47 发布
网友
我的URL格式为:
google.com www.google.com http://google.com http://www.google.com
我想将所有类型的链接转换为统一格式,从http://开始
http://
http://google.com
如何使用Python用http://预处理url?
对于您在问题中提到的格式,您可以执行以下简单操作:
def convert(url): if url.startswith('http://www.'): return 'http://' + url[len('http://www.'):] if url.startswith('www.'): return 'http://' + url[len('www.'):] if not url.startswith('http://'): return 'http://' + url return url
但请注意,可能还有其他格式是您没有预料到的。此外,请记住,输出URL(根据您的定义)不一定是有效的(即,DNS将无法将其转换为有效的IP地址)。
Python确实有内置函数来正确处理这个问题,比如
p = urlparse.urlparse(my_url, 'http') netloc = p.netloc or p.path path = p.path if p.netloc else '' if not netloc.startswith('www.'): netloc = 'www.' + netloc p = urlparse.ParseResult('http', netloc, path, *p[3:]) print(p.geturl())
如果要删除(或添加)部分www,则必须在调用.geturl()之前编辑结果对象的.netloc字段。
www
.geturl()
.netloc
因为ParseResult是一个namedtuple,所以不能就地编辑它,而是必须创建一个新对象。
ParseResult
附言:
对于Python3,应该是urllib.parse.urlparse
urllib.parse.urlparse
我发现使用regex检测协议很容易,如果缺少,可以附加它:
import re def formaturl(url): if not re.match('(?:http|ftp|https)://', url): return 'http://{}'.format(url) return url url = 'test.com' print(formaturl(url)) # http://test.com url = 'https://test.com' print(formaturl(url)) # https://test.com
希望有帮助!
对于您在问题中提到的格式,您可以执行以下简单操作:
但请注意,可能还有其他格式是您没有预料到的。此外,请记住,输出URL(根据您的定义)不一定是有效的(即,DNS将无法将其转换为有效的IP地址)。
Python确实有内置函数来正确处理这个问题,比如
如果要删除(或添加)部分
www
,则必须在调用.geturl()
之前编辑结果对象的.netloc
字段。因为
ParseResult
是一个namedtuple,所以不能就地编辑它,而是必须创建一个新对象。附言:
对于Python3,应该是
urllib.parse.urlparse
我发现使用regex检测协议很容易,如果缺少,可以附加它:
希望有帮助!
相关问题 更多 >
编程相关推荐