python json load 转义_Python:防止json.load文件(文件)从剥离转义字符

这正是你应该期待的,我不知道为什么它不是你想要的。记住,print命令返回一个变量的表示,例如print('\"')给出{}。在

通过您的示例,您可以看到在输出结果时如何将转义字符取回:import json

a = r"""{

"version": 1,

"query": "occasionally I \"need\" to escape \"double\" quotes"

}"""

j = json.loads(a)

print j

print json.dumps(j)

这给了我:

^{pr2}$

(请原谅Python2)

根据您的编辑:

'{}'.format(file['query']) == file['query']返回True-您正在将字符串对象格式化为字符串。正如我所建议的,使用json.dumps(file['query'])

退货"occasionally I \"need\" to escape \"double\" quotes"

顺便说一句,这是一个字符串:'"occasionally I \\"need\\" to escape \\"double\\" quotes"'

您的“实际查询”也是如此:query = '"\\"datadog.agent.up\\".over(\\"role:dns\\").by(\\"host\\").last(1).count_by_status()"'

给予print json.dumps(query)

# "\"datadog.agent.up\".over(\"role:dns\").by(\"host\").last(1).count_by_status()"

with open('myfile.txt', 'w') as f:

f.write(json.dumps(query))

# file contents:

# "\"datadog.agent.up\".over(\"role:dns\").by(\"host\").last(1).count_by_status()"

双\\:

看,这就是为什么你需要明确你到底想做什么。在

加倍\的一个技巧是放入repr()

例如:print repr(json.dumps(query))[1:-1] # to remove the ' from the beginning and end

# "\\"datadog.agent.up\\".over(\\"role:dns\\").by(\\"host\\").last(1).count_by_status()"

with open('myfile.txt', 'w') as f:

f.write(repr(json.dumps(actual_query))[1:-1])

# file:

# "\\"datadog.agent.up\\".over(\\"role:dns\\").by(\\"host\\").last(1).count_by_status()"

你也可以在上面做一个.replace(r'\', r'\\')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值