【问题标题】:JSON value key pair to contain double quote using Python使用 Python 包含双引号的 JSON 值键对
【发布时间】:2020-11-04 08:31:41
【问题描述】:

我正在尝试使用 python 获取 json 键值。

最初我将我的 json 值放在一个字符串变量中,然后我将其转换为字典值,

data='{"enc_column": "5", "Delimiter": ";"}'
pair=json.loads(data)
print (pair['Delimiter'])

结果- ; (分号)

但在我的情况下,我期望的分隔符是“;” (用双引号括起来的分号) 所以我尝试了以下,

data='{"enc_column": "5", "Delimiter": '";"'}'
pair=json.loads(data)

但出现以下错误,

任何人都可以建议将分隔符的结果设为“;”而不仅仅是;使用 Python

我不希望在单独返回分号后加入双引号。

【问题讨论】:

  • "Delimiter": "\";\"" 你需要转义字符串中的"
  • 你在哪里使用";"的分隔符?你能展示一个示例文本片段吗
  • ' 不是有效的字符串常量开始
  • 我猜你对双引号的含义感到困惑,而实际的分隔符应该只是一个分号。 声明字符串时需要引号,但字符串的值不包含引号。

标签: python json


【解决方案1】:

json 中的反斜杠需要转义,json 中不允许使用单引号:

import json
data='{"enc_column": "5", "Delimiter": "\\";\\""}'
pair=json.loads(data)
print (pair['Delimiter'])

PS:通常您不会手动编写 json,但它会由其他组件打印,例如另一个 python 脚本。在这种情况下,转义双引号将由 json 序列化程序完成:

import json
data = {'delimiter': '";"'}
print(json.dumps(data))

输出:

{"delimiter": "\";\""}

如果你把这个字符串放入 python 脚本中:

string = '{"delimiter": "\";\""}'
print(string)

输出:

{"delimiter": "";""}

您将看到您必须转义 \ 以防止它被 Python 解释(并因此消耗):

string = '{"delimiter": "\\";\\""}'
print(string)

输出(根据需要):

{"delimiter": "\";\""}

【讨论】:

  • 双引号可以被\\转义,使用\\\没有任何目的
  • 没错。不知道我是怎么想出这个的。改了
【解决方案2】:

您需要使用双反斜杠 \\ 来转义 JSON 中的双引号 "

在 JS 中评估的 JSON 的转义版本在 sn-p 下面。返回值为";"

data='{"enc_column": "5", "Delimiter": "\\";\\""}'
pair=JSON.parse(data)
console.log((pair['Delimiter']))

【讨论】:

  • 问题是关于 Python 的。
  • 嗯 JSON 有一个标准格式,问题我已经解释过了,JS 执行是为了演示目的!
猜你喜欢
  • 2011-12-09
  • 1970-01-01
  • 2021-12-12
  • 2023-03-09
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 2017-12-19
相关资源
最近更新 更多