如何用Python将网页中的Unicode序列转换为中文字符?
解决HTML Unicode实体转义问题(Python)
要将新北市这类HTML十六进制Unicode实体转换成可正常显示的中文,以下是两种可靠方法:
方法一:使用内置html模块(推荐)
Python 3.2及以上版本自带html模块,其unescape方法可直接处理所有HTML实体,无需手动拆分:
import html raw_str = '新北市' mystring = html.unescape(raw_str) print(mystring) # 输出:新北市
方法二:手动解析转换
如果不想依赖模块,可拆分字符串提取十六进制码,再通过chr()函数转换:
raw_str = '新北市' # 拆分并过滤空字符串 parts = [p for p in raw_str.split(';') if p] # 提取十六进制部分,转成整数后转成Unicode字符 mystring = ''.join([chr(int(p[3:], 16)) for p in parts]) print(mystring) # 输出:新北市
为什么之前的方法无效?
- 直接用
'\u'替换会触发语法错误:Python在编译字符串时,要求\u后必须紧跟4个十六进制字符,动态替换的'\u'在编译阶段是不完整的转义序列,因此报错。 - 用
'\\u'替换得到的是字面量的\u字符,而非Unicode转义序列,所以打印结果是\u65B0\u5317\u5E02,无法解析为中文。
内容的提问来源于stack exchange,提问作者uhoh
相关产品推荐
相关产品推荐

