【问题标题】:Read malformed JSON in Python在 Python 中读取格式错误的 JSON
【发布时间】:2015-09-08 13:21:12
【问题描述】:

我有一个格式错误的 (?) JSON 文件,如下所示:

文件.json:

{u'results': [{u'status': u'OK', u'time': 199, u'name': u'Macap\xe1'}]}

我尝试使用json.loads() 读取此数据,但它不想接受 unicode。 我尝试使用.decode('utf-8') 进行解码,但这不会将\xe1 转换为重音a。

任何有关正确解码和解析 json 的魔法的帮助都会很棒。

谢谢!

附言我正在使用 Python 2.7

【问题讨论】:

    标签: python json python-2.7 unicode


    【解决方案1】:

    这甚至不是格式错误的 JSON,它是 Python 字典文字。解码它的一个好方法是使用ast.literal_eval(因为这将确保它不包含任何危险):

    import ast
    
    txt = r"{u'results': [{u'status': u'OK', u'time': 199, u'name': u'Macap\xe1'}]}"
    obj = ast.literal_eval(txt)
    

    【讨论】:

    • 啊,这是有道理的。快速跟进:如何将变量转换/声明为原始字符串?即text = file.read() 如何使文本成为原始字符串?
    • 您可能想要字符串的repr()。这不会专门为您提供“原始字符串”(“原始字符串”只是一种编写字符串文字的方式,一旦被解析,它与任何其他字符串之间就没有区别)但它会被转义为适合在 Python 代码中用作字符串文字。
    猜你喜欢
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多