将十六进制转义值列表转换为可读字符串的Python方法

0 投票
2 回答
1856 浏览
提问于 2025-04-17 13:47

我有一个这样的列表:

['<option value="284">\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 Historia </option>', '<option value="393">\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 H\xc3\xa4lsa & sk\xc3\xb6nhet </option>']

我该如何把这个列表转换成更容易阅读的格式呢?

我觉得它是用 ISO 8859-1 编码的。

2 个回答

0

看起来像是UTF-8编码:

>>> s=['<option value="284">\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 Historia </option>', '<option value="393">\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 H\xc3\xa4lsa & sk\xc3\xb6nhet </option>']
>>> for v in s:
...     print v.decode('utf8')
...     
<option value="284">     Historia </option>
<option value="393">     Hälsa & skönhet </option>
1

使用 .decode() 方法来解码这个字符串值;实际上,你正在处理的是 UTF-8 数据:

>>> print lst[0].decode('utf8')
<option value="284">     Historia </option>
>>> print lst[1].decode('utf8')
<option value="393">     Hälsa & skönhet </option>

前面的字节表示的是 Unicode 编码点 U+00a0,这个是一个不换行的空格(在 HTML 中表示为 &nbsp;):

>>> lst[0].decode('utf8')
u'<option value="284">\xa0\xa0\xa0\xa0 Historia </option>'
>>> lst[1].decode('utf8')
u'<option value="393">\xa0\xa0\xa0\xa0 H\xe4lsa & sk\xf6nhet </option>'

撰写回答