微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python json.loads失败,出现“ ValueError:第1行第33列字符33处的无效控制字符”

如何解决Python json.loads失败,出现“ ValueError:第1行第33列字符33处的无效控制字符”

问题是你的unicode字符串包含回车(\r)和换行符(\n 的JSON数据字符串文字。如果它们是字符串本身的一部分,则应适当地对其进行转义。如果它们不是字符串的一部分,那么它们也不应该在您的JSON中。

如果无法解决从哪里获取此JSON字符串以生成有效JSON的情况,则可以删除有问题的字符:

>>> json.loads(s.replace('\r\n', ''))

或手动转义它们:

>>> json.loads(s.replace('\r\n', '\\r\\n'))

解决方法

我有一个像这样的字符串:

s = u"""{"desc": "\u73cd\u54c1\u7f51-\u5168\u7403\u6f6e\u6d41\u5962\u54c1\u7f51\u7edc\u96f6\u552e\u5546 <br \/>\r\nhttp:\/\/www.zhenpin.com\/ <br \/>\r\n<br \/>\r\n200\u591a\u4e2a\u56fd\u9645\u4e00\u7ebf\u54c1\u724c\uff0c\u9876\u7ea7\u4e70\u624b\u5168\u7403\u91c7\u8d2d\uff0c100%\u6b63\u54c1\u4fdd\u969c\uff0c7\u5929\u65e0\u6761\u2026"}"""

json.loads(s) 返回如下错误消息:

ValueError: Invalid control character at: line 1 column 33 (char 33)

为什么会发生此错误?我怎么解决这个问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。