1

我有一个看起来像 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 : 但我面临一些问题,无法正确地将 ' 放入原始字符串中,我认为这不是最好的方法。还有其他建议吗?

谢谢。

4

1 回答 1

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))
于 2013-11-01T11:57:58.720 回答