我正在尝试解析包含巨大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))
答案 0 :(得分:1)
您可能应该使用JSON从JavaScript编写数据,然后使用JSON将其读入Python。 YAML没关系,但我倾向于选择JSON而不是YAML; JSON更加一致。
如果你必须解析JavaScript,你可能想要研究pyparsing或类似的。