zop*_*eux 13 python unicode json
我的代码从UserVoice网站获取一些内容.您可能知道,UserVoice是一个无法正确处理数据的软件.实际上,为了减少搜索页面上的文本量,他们将文本剪切为300个字符,然后在末尾添加"...".事实上,他们不关心在多字节字符的中间切割,导致部分utf-8"字节":例如.对于èchar,我得到了\xc3而不是\xc3\xa8s.
当然,当我给这个可怕的汤时json.loads,它失败了UnicodeDecodeError.所以我的问题很简单:我怎么能问json.loads忽略这些坏字节,因为我会做用.decode('utf-8', 'ignore'),如果我有访问函数的内部?
谢谢.
只需将Unicode字符串传递给json.loads():
>>> badstr = "qualité"[:-1]+".."
>>> badstr
'qualit\xc3..'
>>> json_str = '["%s"]' % badstr
>>> import json
>>> json.loads(json_str)
Traceback (most recent call last):
 ...
UnicodeDecodeError: 'utf8' codec can't decode byte 0xc3 in position 6: invalid \
continuation byte
>>> json.loads(json_str.decode('utf-8','ignore'))
[u'qualit..']
| 归档时间: | 
 | 
| 查看次数: | 6908 次 | 
| 最近记录: |