【script】python 中文汉字与url的转换

本文介绍了punycode编码在处理中文域名时的作用,以及如何使用Python进行punycode编码和解码来转换URL。此外,还提到了Python的requests模块在处理中文URL时可能存在的问题,并对比了另一种URL编码方式——urllib.parse的quote和unquote函数。
摘要由CSDN通过智能技术生成

punycode 编码(推荐)

punycode 编码又称 域名代码,是实现 中文汉字转英文字母 的一种编码方式

中文汉字 转 url

import re

url = 'www.示例.com'
# 正则匹配中文汉字
list_cn = re.findall('[\u4e00-\u9fa5]+', url)
# 遍历进行 punycode 编码
list_puny = list(map(lambda x: 'xn--' + x.encode('punycode').decode('utf-8'), list_cn))
# 对原 url 进行替换
for cn, puny in zip(list_cn, list_puny): url = url[:url.find(cn)] + puny + url[url.find(cn) + len(cn):]
print(url)
# www.xn--fsq092h.com

url 转 中文汉字

import re

url = 'www.xn--fsq092h.com'
# 正则匹配 punycode 编码
list_puny = re.findall('xn--(\w*)', url)
# 遍历进行 punycode 解码
list_cn = list(map(lambda x: x.encode('utf-8').decode('punycode'), list_puny))
# 对原 url 进行替换
for puny, cn in zip(list_puny, list_cn): url = url[:url.find(puny) - 4] + cn + url[url.find(puny) + len(puny):]
print(url)
# www.示例.com

之所以推荐该种编码方式,是因为python3的requests模块无法很好的识别中文url编码,导致域名无法访问;其次,谷歌浏览器也是使用的这种编码方式。

url 编码

中文汉字 转 url

from urllib.parse import quote
import string

url = 'www.示例.com'
url = quote(url, safe = string.printable)	# safe 表示可以忽略的字符,数字大小写字母特殊字符等
print(url)
# www.%E7%A4%BA%E4%BE%8B.com

url 转 中文汉字

from urllib.parse import unquote

url = 'www.%E7%A4%BA%E4%BE%8B.com'
url = unquote(url, encoding='utf-8')	# encoding 表示编码,可为 GBK 或 utf-8
print(url)
# www.示例.com
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值