【发布时间】:2017-03-20 06:14:32
【问题描述】:
我有一个包含许多对象字面量的 JavaScript 文件:
// lots of irrelevant code
oneParticularFunction({
key1: "string value",
key2: 12345,
key3: "strings which may contain ({ arbitrary characters })"
});
// more irrelevant code
我需要编写一些 Python 代码来提取这些文字。
我的第一次尝试是正则表达式oneParticularFunction\(\{(.*?)\}\);。但如果文字包含“})”,则会失败。
由于我知道对象将是有效 JavaScript 文件中的有效 JSON(匹配的引号、大括号等),有没有更优雅的方法来提取它们?
(换句话说,困难在于删除所有其他我不关心的 JavaScript 代码。)
编辑:最后,我对任何不包含子对象的对象使用了正则表达式...
oneParticularFunction\((\{([^"}]*"[^"]*"[^"}]*)*?[^"]*?\})\);
...并手动跟踪打开/关闭大括号以进行任何嵌套。
【问题讨论】:
-
在python中使用其中一个json解码器怎么样?然后你迭代每个键值对。
-
@elfan 我希望使用
json,但我需要先摆脱所有周围的JavaScript。 -
如果代码看起来像您的示例,您可以实现
oneParticularFunction()JavaScript 函数的 Python 版本,然后尝试使用 @ 从文件中执行代码片段(这只是一个函数调用) 987654326@。如果成功,那么您可以从传递给函数的参数中提取值(这将是一个 Python 字典对象)。 -
@martineau 这是一个漂亮的 hack,但不幸的是 Python 坚持在字典键周围加上引号,而 JSON 没有。
标签: javascript python json regex