将十六进制转义值列表到Python中的可读字符串

时间:2013-01-26 22:38:45

标签: python list escaping hex iso-8859-1

我有一个这样的清单:

['<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 :(得分: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,一个不间断的空格(&nbsp;作为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>'

答案 1 :(得分: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>