Сабж. Есть некоторый фрагмент питоньего кода (строка), есть словарь замен. Надо в строке кода некоторые переменные поменять согласно словарю на то что в словаре и получить код после преобразования.
Словарь имеет вид
table = {'A':1.2, 'B':3.14, 'X':'Y'}
Вроде я могу при помощи модуля ast конвертнуть код в дерево и провести в нем замены. Но как мне обратно собрать код? Все что я попытался сделать с codegen, sourcecodegen пока не работает.
Код для теста
#!/usr/bin/python
import ast, sourcecodegen
table = {'A':123, 'X':'Y'}
class Repl(ast.NodeTransformer):
def visit_Name(self, node):
if node.id in table: return ast.parse(str(table[node.id]))
E = 'sin(X)*A'
P = ast.parse(E, 'eval')
R = Repl().visit(P)
#print astor.codegen.to_source(R)
print sourcecodegen.generate_code(R)
ЗЫ Хотелось бы что бы решение было на основе стандартных модулей, не требующих установки чего то дополнительного