在python中用双引号解码JSON文件

在python中用双引号解码JSON文件,python,json,decoding,Python,Json,Decoding,我需要一个解决这个问题的潜在方法。 我有一个web服务,它可以直接从数据库中提取一些数据,并将其保存为JSON文件(事实证明是这样的) 正常和工作的数据切片如下所示: [ { "number" : 1, "title" : "title 1", "description" : "description 1" }, { "number" : 2, "title" : "title 2", "description" : "descript

我需要一个解决这个问题的潜在方法。 我有一个web服务,它可以直接从数据库中提取一些数据,并将其保存为JSON文件(事实证明是这样的)

正常和工作的数据切片如下所示:

[
  {
    "number" : 1,
    "title" : "title 1",
    "description" : "description 1"
  },
  {
    "number" : 2,
    "title" : "title 2",
    "description" : "description 2"
  }
]
[
  {
    "number" : 3,
    "title" : "title 3",
    "description" : "description by dawid.smith<"dawid@smith.com"> 1"
  },
  {
    "number" : 4,
    "title" : "title 4",
    "description" : "description 2"
  }
]
但有时数据库中的“描述”字段可能从Outlook复制了电子邮件,然后JSON如下所示:

[
  {
    "number" : 1,
    "title" : "title 1",
    "description" : "description 1"
  },
  {
    "number" : 2,
    "title" : "title 2",
    "description" : "description 2"
  }
]
[
  {
    "number" : 3,
    "title" : "title 3",
    "description" : "description by dawid.smith<"dawid@smith.com"> 1"
  },
  {
    "number" : 4,
    "title" : "title 4",
    "description" : "description 2"
  }
]
无法处理电子邮件周围带双引号的JSON,因为:

json.decoder.JSONDecodeError:应为','分隔符:第5行第50列(字符98)
考虑到实际的JSON可能包含大量的entires,我认为如果找到电子邮件,则逐行重新表达它会太费劲


是否有任何解决方法可以绕过key-'description'值内的双引号?

您无法解析输入,因为它不是有效的JSON。你得事先把它修好。假设只有
是坏情况,您可以使用
sed
这样做:

%sed-E's//g'input.txt | python-m json.tool
[
{
“数字”:3,
“标题”:“标题3”,
“描述”:“dawid.smith描述”dawid@smith.com\"> 1"
},
{
“数字”:4,
“标题”:“标题4”,
“说明”:“说明2”
}
]

这个正则表达式可能会有所帮助吗<代码>json\u str=re.sub(r':\”(.*)\“$”,lambda g:':“+g.group(1)。替换('”,“'”)+'”,断开的\u json\u数据,标志=re.M)@AndrejKesely但你仍然是说在解码之前重新导出文件,对吗?是的。但这取决于你的数据,如果可行与否。但你可以试试……好吧,我的一些json文件可能会占用大量资源,但无论如何,谢谢你的回复。不过,我还是会寻找解码的变通方法。Web服务e有错误-它应该正确地编码所有字符。修复问题源不是更容易吗?是的,我认为我们必须在web服务工作期间提前完成。谢谢。