2017-02-28 4 views
0

j'écrire un générateur de code python comme entrée a un code source: source Une partie de la sortie que je dois générer est execute(source_code) Lorsque source_code est une chaîne représentant . source Si j'écris "execute({0})".format(source) pour la source d'entrée = « import sys » je vais obtenir execute(import sys) donc j'ai essayé:..? execute(\"\"\"{0}\"\"\")format(source) est-ce ok j'ai essayé de le tester ... Parfois, il est ok .... La problème se produit lorsque à l'intérieur de la source il y a """ Par exemple:Générer du code python pour l'exécution (correction automatique « » ")

from IPython.display import HTML 

HTML(""" 
<script> 
console.log("hello"); 
</script> 
<b>HTML</b> 
""") 

mon code se révèle être

execute("""from IPython.display import HTML 
HTML(""" 
<script> 
console.log("hello"); 
</script> 
<b>HTML</b> 
""")""") 

UPD: Modification du code à

execute('''{0}''').format(source) 

n `t résoudre le problème, le problème sera rencontré avec:

def tojson(data): 
    '''Shorten the code to respond a little bit.''' 
    print(json.dumps(data)) 

Répondre

1

Utilisation de tri simple citations ples devraient aider:

execute('''from IPython.display import HTML 
HTML(""" 
<script> 
console.log("hello"); 
</script> 
<b>HTML</b> 
""")''') 

Courir dans un ordinateur portable, vous devez utiliser eval() pour afficher réellement le HTML:

exec('''from IPython.display import HTML''') 
eval('''HTML(""" 
<script> 
console.log("hello"); 
</script> 
<b>HTML</b> 
""")''') 

Dans votre cas probablement:

execute('''{0}''').format(source) 

Works aussi s'il y a ''' à l'intérieur de la chaîne:

source = """ 
def add(a, b): 
    '''Add''' 
    return a + b 

print(add(1, 2)) 
""" 

exec('''{0}'''.format(source)) 

Sortie:

3 
+0

changer pour exécuter ('' '{0}' '') le format (source) fonctionne bien! Merci! mais que se passe-t-il si la source à l'intérieur est '' '? Je vais rencontrer le même problème? – Yakov