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

Fastest way to convert JavaScript object/array to Python dict/list

本文关键字:list dict 方法 对象 JavaScript 数组 转换 Python      更新时间:2023-09-26

我正在尝试解析包含巨大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))

您可能应该使用JSON从JavaScript编写数据,然后用JSON将其读取到Python中。YAML还可以,但我更喜欢JSON而不是YAML;JSON更加一致。

如果您必须解析JavaScript,您可能需要研究pyparsing或类似功能。