2013-07-27 42 views
1

我想分析JavaScript对象的代码,它包含巨大的JavaScript数组并将其转换为带有列表的Python字典。最快的方法来将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

请看:http://stackoverflow.com/questions/10057375/python-parsing-json-like-javascript-data-structures-w-consecutive-commas – alecxe

+1

是否http://slimit.readthedocs.org/ en/latest /#iterate-over-modify-a-javascript-ast-and-pretty-print-it help? – vsr

回答

1

你或许应该写使用JSON在JavaScript中的数据,然后在JSON读入的Python。 YAML是可以的,但我倾向于选择JSON而不是YAML; JSON更一致。

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

+1

我没有访问JavaScript端,但我会看看pyparsing。 –

相关问题