如何将从数据库读取的字节字符串格式HTML转为正常字符串?
解决带字节标记的字符串解码问题
你的问题本质是拿到了一个模拟字节串格式的普通字符串,里面同时包含字节转义序列和HTML实体转义,分三步处理就能还原成正常可读的内容:
步骤1:剥离字节标记并转换为Bytes对象
原字符串开头的b'和结尾的'是字符串形式的字节标记,先去掉它们,再用latin-1编码转换为真实的Bytes对象——latin-1是单字节编码,能1:1还原所有转义字符对应的原始字节。
步骤2:解码Bytes为UTF-8字符串
用UTF-8解码Bytes,就能把\xc3\xa9这类转义序列还原成对应的Unicode字符(比如é)。
步骤3:反转义HTML实体
字符串里的<、&是HTML实体,需要转成<、&这类原始符号,用Python标准库的html.unescape就能搞定。
完整代码示例
import html # 你的原始字符串 html_page = """b'<html lang="en"><body> Accompagnement g\xc3\xa9n\xc3\xa9ral Droit des Affaires :&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt; &lt;li&gt;D\xc3\xa9velopper la connaissance des activit\xc3\xa9s techniques et commerciales d\xe2\x80\x99InterCloud, l\xe2\x80\x99identification et la ma\xc3\xaetrise des risques juridiques inh\xc3\xa9rents&lt;/li&gt; &lt;li&gt;Assurer une veille sur les sujets qui peuvent toucher les interlocuteurs internes (droit des contrats, droit international, Droit du num\xc3\xa9rique, Donn\xc3\xa9es personnelles, Cloud Act, Data Act, Droit de la concurrence, Anti-corruption\xe2\x80\xa6)&lt;/li&gt; &lt;li&gt;Fournir des notes d\xe2\x80\x99information, recommandations ou documentation juridiques afin de mettre en conformit\xc3\xa9 l\xe2\x80\x99entreprise ou permettre d\xe2\x80\x99anticiper les \xc3\xa9volutions r\xc3\xa8glementaires.&lt;/li&gt; &lt;/ul&gt;</body></html>'""" # 处理步骤 # 1. 去掉b'和',转成bytes byte_data = html_page.strip("b'").encode('latin-1') # 2. 解码为utf-8字符串 decoded_str = byte_data.decode('utf-8') # 3. 反转义HTML实体 final_html = html.unescape(decoded_str) # 输出结果 print(final_html)
运行后就能得到正常的HTML字符串,里面的法语字符和标点都能正常显示,HTML标签也还原成了原始的<>格式。
内容的提问来源于stack exchange,提问作者Minions
相关产品推荐
相关产品推荐

