【问题标题】:Loads json with double quotes in it加载带有双引号的 json
【发布时间】:2021-11-28 06:18:19
【问题描述】:

我正在尝试解析其中包含双引号的 JSON 字符串:

import json
x = '''{"key":"Value \"123\" "}'''

当我尝试使用以下语句加载此 JSON 时

y = json.loads(x)

它引发了以下异常:

Expecting ',' delimiter: line 1 column 15 (char 14)

据我了解,这是由于 JSON 中 123 左右的双引号引起的。另外,我也尝试用其他一些东西替换 \" (反斜杠引号),但都是徒劳的

x.replace('\"',"'")

因为它还替换了键和值周围的双引号

'''{"key": "Value \"123\" "}'''  ---Replacing-->    '''{'key':'Value '123' '}''')

我无法更改输入字符串中的任何内容。这来自一个 API。 任何帮助将不胜感激,我已经坚持了很长时间。提前谢谢...

【问题讨论】:

  • 这有点关系到那个负载 fn,但是如果你有任何从字符串解析的方法,请尝试首先解析 i,在 JS 中将是 JSON.parse 的字符串导致将删除附加的额外引号
  • 你指的是一些 JS 库?
  • 你确定这就是真实数据的样子吗?使用转义序列解释文字字符串(写在源代码中) - 逐字获取现有字符串(来自文件、套接字、API)。 Python 不会表示如图所示的字符串,因为转义序列是多余的。
  • 是的,数据的格式就是这样。服务器基本上是从 PST 文件中提取数据并通过 API 发送数据。
  • 重点是,由于某种原因,您在数据中显示\",而 Python 不会这样显示它。因此,不清楚这些是否存在或由于代码或准备问题中的一些错误而丢失。例如,您再次声明 \" 实际上存在于您的数据中,但同时也显示没有它的数据。

标签: python json python-3.x python-jsons


【解决方案1】:

\" 在字符串中只是一个双引号。您需要添加另一个反斜杠:

x = '''{"key":"Value \\"123\\" "}'''

【讨论】:

  • 我无法直接更改字符串中的任何内容。必须使用某些功能或诸如替换或 re.sub 之类的东西来完成
  • 字符串的来源是什么?如果是您的代码,您显然可以更改它
  • 源基本上是一个服务器,我只是使用 API 来获取这个响应作为字符串: '{"key":"Value \"123\" "}' FYI 服务器基本上是解析 PST 文件,因此其中有许多不规则的模式。
猜你喜欢
  • 2013-02-28
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多