Python中如何将HTML实体字节串解码为西里尔文?
问题:解码西里尔文字符串的问题
我有如下字节串,它应当解码为西里尔文字符“Сравнение”:
a = b'Сравнение'
使用UTF-8解码无法得到预期结果:
a = b'Сравнение' a.decode("utf-8") # 输出仍为Ср...形式的字符串
请问这是什么编码?该如何解码这段字符串?我使用的是Google Colab环境,Python版本为3.10.12。某在线解码器自动解码后提示需从UTF-8转UTF-8。
解答
这不是特殊编码,而是HTML实体编码。你看到的&#数字;格式是HTML中用来表示Unicode字符的实体形式,每个数字对应字符的Unicode码点。
解决步骤:
- 先用UTF-8解码字节串,得到包含HTML实体的字符串
- 使用Python内置的
html模块解析这些实体,转换为对应的西里尔字符
具体代码示例:
import html a = b'Сравнение' # 解码字节串为UTF-8字符串 str_with_entities = a.decode("utf-8") # 解析HTML实体得到目标字符 target_str = html.unescape(str_with_entities) print(target_str) # 输出:Сравнение
在线解码器提示的“从UTF-8转UTF-8”,本质是先完成字节串到UTF-8字符串的解码,再自动解析字符串中的HTML实体,和上述两步操作一致。
内容的提问来源于stack exchange,提问作者ans
相关产品推荐
相关产品推荐

