我编写了一个python代码生成器
作为输入,它有一个源代码:source
我需要生成的部分输出是execute(source_code)
当source_code
是表示source
的字符串时。
如果我为输入源编写"execute({0})".format(source)
=" import sys"
我得到execute(import sys)
。
所以我尝试了:execute(\"\"\"{0}\"\"\")format(source)
。好吗?我试着测试它......有时它没关系......当源内有"""
时会出现问题
例如:
from IPython.display import HTML
HTML("""
<script>
console.log("hello");
</script>
<b>HTML</b>
""")
我的代码变成了
execute("""from IPython.display import HTML
HTML("""
<script>
console.log("hello");
</script>
<b>HTML</b>
""")""")
UPD: 将代码更改为
execute('''{0}''').format(source)
没有解决问题,将遇到以下问题:
def tojson(data):
'''Shorten the code to respond a little bit.'''
print(json.dumps(data))
答案 0 :(得分:1)
使用单个三重引号应该有所帮助:
execute('''from IPython.display import HTML
HTML("""
<script>
console.log("hello");
</script>
<b>HTML</b>
""")''')
在笔记本中运行,您需要使用eval()
来实际显示 HTML :
exec('''from IPython.display import HTML''')
eval('''HTML("""
<script>
console.log("hello");
</script>
<b>HTML</b>
""")''')
在你的情况下可能:
execute('''{0}''').format(source)
如果字符串中有'''
,也可以使用
source = """
def add(a, b):
'''Add'''
return a + b
print(add(1, 2))
"""
exec('''{0}'''.format(source))
输出:
3