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