将十六进制转义值列表转换为可读字符串的Python方法
我有一个这样的列表:
['<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 中表示为
):
>>> 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>'