我遇到了像#34;(d,a,b = 2,c = 3)"我需要把它解析成* args和** kwargs。
我尝试使用ast模块,但它无法将Assign运算符转换为键值对。 eval
也给出了类似的错误,我也想避免使用eval。
注意,我想避免在,
上拆分,因为输入可能是以下形式:
"(d, [b,c], e=3, f=[5,6])"
以下是我的尝试:
>>import ast
>>input_args = "(d, a, b=2, c=3)"
>>ast_tree = ast.parse(input_args)
我明白了:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/ast.py", line 37, in parse
return compile(source, filename, mode, PyCF_ONLY_AST)
File "<unknown>", line 1
(d, a, b=2, c=3)
^
SyntaxError: invalid syntax
有人可以提供和提供有关如何执行此操作的线索或可以帮助您以简洁的方式执行此操作的模块吗?
答案 0 :(得分:1)
只需在前面添加一个虚拟函数名称:
input_args = "dummy(d, a, b=2, c=3)"
ast_tree = ast.parse(input_args)