【问题标题】:Python json parser problem with whitespaces带有空格的Python json解析器问题
【发布时间】:2020-08-19 01:10:08
【问题描述】:

我正在处理一些从 API 获得的 JSON 数据。但是,当我尝试使用 python json 解析器解析它时,引号中的结果值会被错误地解析。

例如:

从 api 的 response.text 我得到以下部分:“value”:“4 685”, 解析后变成 'value': '4\xa0685'

我知道我可以手动删除 \xa0 并获得结果,但这似乎是一个奇怪的解决方案。

代码:

response = requests.get(url)
data = json.loads(response.text)

有人知道这里发生了什么吗?

【问题讨论】:

    标签: python json string parsing integer


    【解决方案1】:

    在我看来,这似乎是编码的问题。

    来自请求模块文档

    当您提出请求时,Requests 会做出有根据的猜测 基于 HTTP 标头的响应编码。文本编码 访问 r.text 时使用 Requests 猜测的。你可以了解 Requests 正在使用什么编码,并使用 r.encoding 进行更改 属性

    您能否检查标头以检查设置了哪个字符集并使用encode() 转换为正确的编码?

    您可以选择在转换为 JSON 之前将响应的编码更改为“utf-8”。

    response = requests.get(url)
    response.encoding = 'utf-8'
    data = json.loads(response.text)
    

    参考: https://requests.readthedocs.io/en/master/user/quickstart/#response-content

    【讨论】:

      【解决方案2】:

      4 685 不是格式正确的数字,解析器无法将其读取为整数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 2018-07-05
        • 2015-10-29
        • 1970-01-01
        • 2014-03-29
        • 2018-06-23
        • 2015-11-01
        相关资源
        最近更新 更多