将JavaScript对象/数组转换为Python dict / list的最快方法

时间:2013-07-27 18:38:55

标签: javascript python pyyaml

我正在尝试解析包含巨大JavaScript数组的JavaScript对象代码,并将其转换为带有列表的Python字典。

目前我正在使用PyYaml,但这并不能直接起作用,因为它无法处理连续的逗号(例如它在'[,,, 0,]'上打破:期望节点内容,但找到',')。所以我把它们替换掉了,但这一切都很慢。我想知道你们中是否有人知道更好更快的方法。 JSON解码不起作用,因为JavaScript代码也不是JSON有效。

这是我正在使用的代码,如上所述,以js_obj为例:

js_obj = "{index: '37',data: [, 1, 2, 3,,,]}"

def repl(match):
    content = re.sub(" ", "",match.group(0))
    length = len(content) - 1
    result = ''
    if content[0] == '[':
        result = '[""'
        length -= 1

    after = ','
    if content[-1] == ']':
        length -= 1
        after += '""]'

    return result + (',""' * length) + after

py_dict = yaml.load(re.sub('\[? *(, *)+\]?', repl, js_obj))

1 个答案:

答案 0 :(得分:1)

您可能应该使用JSON从JavaScript编写数据,然后使用JSON将其读入Python。 YAML没关系,但我倾向于选择JSON而不是YAML; JSON更加一致。

如果你必须解析JavaScript,你可能想要研究pyparsing或类似的。