我有一个非常大的类JSON文件,但它没有使用正确的JSON语法:没有引用对象键.我想编写一个脚本来修复文件,以便我可以加载它json.loads.
我需要匹配后跟冒号的所有单词,并用引用的单词替换它们.我认为正则表达式是\w+\s*:我应该使用的re.sub,但我不确定如何做到这一点.
如何获取以下输入并获得给定的输出?
# In
{abc : "xyz", cde : {}, fgh : ["hfz"]}
# Out
{"abc" : "xyz", "cde" : {}, "fgh" : ["hfz"]}
# In
{
a: "b",
b: {
c: "d",
d: []
},
e: "f"
}
# Out
{
"a": "b",
"b": {
"c": "d",
"d": []
},
"e": "f"
}
Run Code Online (Sandbox Code Playgroud)
您可以利用以下事实,而不是可能脆弱的正则表达式解决方案,虽然您的日志文件不是有效的JSON,但它是有效的YAML.使用PyYAML库,您可以将其加载到Python数据结构中,然后将其作为有效的JSON写回:
import json
import yaml
with open("original.log") as f:
data = yaml.load(f)
with open("jsonified.log", "w") as f:
json.dump(data, f)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |