当前位置: 首页 > 工具软件 > 中文 Python > 使用案例 >

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

颛孙森
2023-12-01

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
 类似资料: