Python:修复无效的json字符串
我在字符串中有格式错误的JSON,如下所示:Python:修复无效的json字符串,python,json,format,Python,Json,Format,我在字符串中有格式错误的JSON,如下所示: "{var_1=100, var_2={\"Code\": 200, \"Headers\": {\"content-type\": \"text/html; charset=utf-8\"}}, var_3=0}" { "var_1": "100", "var_2": { "Code": "200", "Headers": { "content-type": "text/ht
"{var_1=100, var_2={\"Code\": 200, \"Headers\": {\"content-type\": \"text/html; charset=utf-8\"}}, var_3=0}"
{
"var_1": "100",
"var_2": {
"Code": "200",
"Headers": {
"content-type": "text/html; charset=utf-8"
}
},
"var_3": "0"
}
我需要将其格式化为正确的JSON,如下所示:
"{var_1=100, var_2={\"Code\": 200, \"Headers\": {\"content-type\": \"text/html; charset=utf-8\"}}, var_3=0}"
{
"var_1": "100",
"var_2": {
"Code": "200",
"Headers": {
"content-type": "text/html; charset=utf-8"
}
},
"var_3": "0"
}
有没有快速解决这个问题的方法?
也许是python的第三方库?
有人遇到过类似的问题吗
提前感谢:)
干杯:)使用带有
ast
模块的正则表达式
Ex:
import re
import ast
s = "{var_1=100, var_2={\"Code\": 200, \"Headers\": {\"content-type\": \"text/html; charset=utf-8\"}}, var_3=0}"
print(ast.literal_eval(re.sub(r"(\w+)=", r"'\1':", s)))
{'var_1': 100,
'var_2': {'Code': 200,
'Headers': {'content-type': "text/html; 'charset':utf-8"}},
'var_3': 0}
输出:
import re
import ast
s = "{var_1=100, var_2={\"Code\": 200, \"Headers\": {\"content-type\": \"text/html; charset=utf-8\"}}, var_3=0}"
print(ast.literal_eval(re.sub(r"(\w+)=", r"'\1':", s)))
{'var_1': 100,
'var_2': {'Code': 200,
'Headers': {'content-type': "text/html; 'charset':utf-8"}},
'var_3': 0}
JSON文档需要有双引号。您需要从数据源修复数据。这不是“格式错误的json”,这是无效的json(注意:它根本不是json)。这里最好的解决方案是在源代码(生成此无效json的代码)处解决问题-当然,如果可能的话;-)我同意它根本不是json,但基本上格式不好的json也不是json…:)是的,区别确实有点迂腐xD——但通常当我们想到“格式”时,我们想到的是表示,而不是语法。但无论如何:主要的一点是,解决原因比解决结果要好;-)当然,我同意这一点,但就我而言,我对事业没有影响。。。是的,你有权利认为这里的“格式”可能会误导人。我将更改标题,使其更加连贯。据我所知,OP要求的是“正确的JSON”,而不是打印Python dict,因此它实际上应该类似于“JSON.dumps”(ast.literal_eval(re.sub(r)(\w+”,r“'\1':”,s)),indent=2)`如果字符串包含
=
,则可能会更改不应更改的内容。只有正确的解析才能以一般方式解决这个问题。