【问题标题】:Fastest way to convert JavaScript object/array to Python dict/list将 JavaScript 对象/数组转换为 Python dict/list 的最快方法
【发布时间】:2023-03-20 11:02:02
【问题描述】:

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

【问题讨论】:

标签: javascript python pyyaml


【解决方案1】:

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

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

【讨论】:

  • 我无法访问 JavaScript 端,但我会看看 pyparsing。
猜你喜欢
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多