首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于unicode错误,加载unicode json/序列化字典失败

由于unicode错误,加载unicode json/序列化字典失败
EN

Stack Overflow用户
提问于 2019-01-20 21:06:01
回答 1查看 153关注 0票数 0

我得到了一些输入,我必须对其进行解析并转换为Dict。我不控制输入是如何生成的。

一个输入示例是u'{u\'my_key\': u\'AB\\N\'}'。注意,this应该表示一个序列化的字典。

使用多种方法无法解析此字典字符串。由于structure of the string being malformed due to the nested u的原因,使用json.loads失败。使用ast.literal_eval失败并出现(unicode error) 'unicodeescape' codec can't decode bytes in position 3-4: malformed \N character escape错误。

我需要以某种方式清理输入,这样在用ast解析时,\N就不会被认为是ascii字符。做一个简单的replace('\\', '\\\\')似乎很容易出错,而且可能有很多边缘情况。

或者,我需要一种方法从嵌套的字符串中删除u,这样json.loads才能工作。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-01-20 22:59:44

处理这种输入并不容易。事实上,我能找到的唯一解决方案是:

代码语言:javascript
复制
input_data = u'{u\'my_key\': u\'AB\\N\'}'

i = input_data\
    .replace('\'', '"')\
    .replace('u', '')\
    .replace('\\', '\\\\')

data = json.loads(i)
print(type(data))
# <type 'dict'>

它可能会解决您的特定示例,但我不鼓励在您的项目中使用它。

正如@snakecharmerb所说,我还建议对输入实施某种策略,并在发送之前验证json字符串,例如使用this之类的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54276747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档