Я нахожусь в ситуации, когда я сталкиваюсь со строкой типа "(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
Может кто-нибудь предоставить и подсказать, как это сделать или какой модульможет помочь сделать это аккуратно?