如何处理双引号和反斜线在解析Python中的JSON

时间:2019-02-02 11:22:22

标签: python json

我有一个程序可以返回json数据,该数据将存储在字符串中并从中创建对象。

JSON就是这样

try.sh

#! /bin/bash

echo '{"Directory": "{hell\o}"}'

Python程序:

import subprocess,json
returned_value =subprocess.check_output("try.sh")
obj = json.loads(returned_value)
pprint.pprint(obj)

我收到误差

  

ValueError:无效\ escape:第1行第21列(字符20)

如果输出中存在\或“,考虑到对try.sh的控制权,我该如何处理?

2 个答案:

答案 0 :(得分:1)

您可以在您的return_value上使用str.translate:

escaped_returned_value = returned_value.translate(str.maketrans({"\\":  r"\\"}))

输出:

 '{"Directory": "{hell\\o}"}'

答案 1 :(得分:-1)

在[59]中:data =“ {hell \ o}”

在[60]中:数据

出[60]:“ {hell \ o}”

在[61]中:json.dumps(data)

出[61]:'“ {hell \\ o}”'

请参阅此JSON中使用的特殊字符列表:

\b  Backspace (ascii code 08)
\f  Form feed (ascii code 0C)
\n  New line
\r  Carriage return
\t  Tab
\"  Double quote
\\  Backslash character