私は別のPythonファイルをコンパイルするためにPythonを使用しています。この目的を達成するために、私は上記の出力は適切な複数行インデントでPythonコードを生成するためのPythonテンプレート
def main():
a
b
c
return
れ、すでにハイライトである
from string import Template
s = Template('''
def main():
${body}
return
''')
# body constructed bit by bit
body = ['a']
body.append('b')
body.append('c')
out = s.substitute(body='\n'.join(body))
print(out)
、私は例えば、構築関数本体、例えば、挿入先のstring
からTemplate
を使用します問題:${body}
最初の行以外の行は正しくインデントされません。もちろん、'b'
と'c'
をbody
のリストに挿入するときにスペースを手動で追加することはできますが、すでにボディが挿入されるテンプレートの知識を前提としています。
は(おそらくstring.Template
を開始する適切なテンプレートエンジンではないです。)
'私は= s.template.find( '$ {body}'); indent = s.template [s.template.rfind( '\ n'、0、i)+ 1:i];インデントレベルが異なる複数の '$ {body} 'がある場合、out = s.substitute(body =(' \ n '+ indent).join(body))'は動作しません。 – falsetru
あなたの要求が正確であると言うべきです。適切なインデントを持つ行のリストを挿入することは可能であるべきですが、 'string.Template'が作られたのとまったく同じではありません。 –
コメントありがとうございます。説明から不明な点は何ですか?私はそれにもっと詳細を加えようとします。 –