0

我正在尝试编写一个 python 脚本来收集一个特定函数的参数。参数可以像这样在多行中:

str = "getParameters(['ABCD_1','ABCD_2',\
                       'ABCD_3','ABCD_4'])\

这已经有效:(它可以捕获'和'之间的每个单词):

parameters = re.findall(r'\'[\w-]+\'', str)
for parameter in parameters:
   print parameter

但我只希望在 getParameters 函数的情况下收集要收集的参数,这不起作用:

getparameters = re.findall(r'getParameters\(\[[\w-]+', str, re.X|re.DOTALL)
for line in getparameters:
    print line

请建议!

4

2 回答 2

2

这是一个使用 ast 的示例,只是为了好玩。

import ast

module = ast.parse(
    """getParameters(['ABCD_1','ABCD_2',
                      'ABCD_3','ABCD_4'])""")

for item in module.body:
    if isinstance(item.value, ast.Call) and item.value.func.id == 'getParameters':
        parameters = [each.s for each in item.value.args[0].elts]

print parameters
于 2013-01-15T10:41:43.577 回答
0

如果您固定使用 RegEx 并且您的函数只发生一次,您可以尝试:

re.findall('\'(\w+)\',?', re.search('(getParameters\(.+?\))', x, re.X|re.S).group(1), re.X|re.S)

这并不理想,但它有效。我确信有更好的方法来做到这一点。

于 2013-01-15T14:59:27.050 回答