我有一个看起来像JSON的字符串,但事实并非如此。我想将它转换为Python对象(来回)。
格式如下:
v = "{ TestKey = true,
Calibration = 0,
Blacks = 0,
Brightness = 50,
BasicSetting = { 0,
0,
32,
22},
Whites = 0 }"
我不能直接在这样的字符串上使用json.load(v)。 将它转换为Python对象的最佳/最简单方法是什么? 编写自定义Python JSON编码器/解码器? 我需要将Python解码回原始的字符串格式。
到目前为止,我正在替换= by:但我面临一些问题,要正确地将'放在原始字符串中,我认为这不是最好的方法。还有其他建议吗?
感谢。
答案 0 :(得分:1)
这很丑,因为地狱和一些正则表达的忍者能够使用一半的符号实现这一点,但似乎有效:
import json
import re
def parse(v):
# Remove newlines and replace "=" with ":"
v1 = v.replace('=', ':').replace("\n", "")
# Enclose strings in double quotes
v2 = re.sub(r'(\d*[a-zA-Z][a-zA-Z0-9]*)', r'"\g<1>"', v1)
# If you want booleans
v3 = re.sub(r'"(true|false)"', r'\g<1>', v2)
# Create lists
return json.loads(re.sub(r"{([^:]+)}", r'[\g<1>]', v3))