【问题标题】:Python json.load() read \u003d as it is [closed]Python json.load() 读取 \u003d,因为它是 [关闭]
【发布时间】:2020-11-23 09:22:55
【问题描述】:

我有一个包含以下内容的 Json 文件 temp.json

{
  "response": {
    "statusCode": 202,
    "headers": [
      [
        "Content-Type",
        "application/json;charset\u003dutf-8"
      ]
    ]
  }
}

现在,当我打印内容时,它会按原样打印

>>> f = open("temp.json")
>>> print(f.read())
{
  "response": {
    "statusCode": 202,
    "headers": [
      [
        "Content-Type",
        "application/json;charset\u003dutf-8"
      ]
    ]
  }
}
>>> f.close()

但是当我执行 json.load() 时,所有的 "\u003d" 代码都变成了它们的值,我们可以在 Content-Type 之前的 utf-8 它更改为 =

>>> import json
>>> f = open("temp.json")
>>> print(json.load(f))
{'response': {'statusCode': 202, 'headers': [['Content-Type', 'application/json;charset=utf-8']]}}
>>> f.close()

是否有任何标志或任何其他方式可以按原样加载它们?

python 版本 3.9.0

【问题讨论】:

  • “按原样加载”是什么意思? JSON 是数据的表示法,在这种表示法中\u003d 表示=,就像{} 表示dict。要么不解析 JSON,即f.read(),要么解析 JSON,即 json.load(f)
  • “加载” JSON "\u003d=" 所需的结果是什么?你想要"\u003d=""==" 还是"\u003d\u003d"
  • 我在这里要做的是,我将加载文件,使用正则表达式更新特定键的值,然后将内容转储回同一个文件中。完成此操作后,文件中的所有\u003d 都更改为=。我不想更改文件中的任何其他内容,除了给定键的值。
  • 这是技术要求(例如,输出的某些接收器会阻塞)还是个人偏好?就 JSON 而言,=\u003d 是等价的,可以互换的。
  • 这是个人喜好,使用这些文件的java应用程序在你说的更改后没有任何问题。

标签: python json unicode-string


【解决方案1】:

这就是“它是什么”; \u003d 是 JSON 中表示文字字符 = 的一种方式。如果您不想将 JSON 解析为 JSON,则必须实现自己的(反)解析器。

【讨论】:

  • 感谢您的回答,有没有办法在将 json 转储到文件时像以前一样隐藏这些字符?
  • “照旧覆盖”是什么意思?
  • = 更改为\u003d
  • 不是直接的,但json source code 暗示了如何使用自定义编码器编写自己的派生类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-25
  • 2014-01-20
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
相关资源
最近更新 更多