2017-12-12 8 views
2

ので、私は識別子にメソッドを追加することができます限りTemplate stringsをすることが可能です:Pythonのテンプレートの文字列を拡張

デフォルトでは、私は単純な変数と交換することができる

from string import Template 
t = Template("${noun}ification") 
t.substitute(dict(noun='Egg')) # Output: 'Eggification' 

をしかし、私は、識別子を拡張したいですカスタムメソッド(例えばas_b)で:

t = Template("${noun.as_b}ification") # Desired output: '<b>Egg</b>ification' 

私は簡単にFormatted string literalsと似た何かを行うことができます知っているが、それは経口であります上記のようなテンプレート文字列を使用していますか? 書式付き文字列リテラルは、スクリプト、JSONファイル、または中括弧を含むテキスト内では機能しないため、使用できません。

は基本的に私は、テンプレートの文字列フォーマットされた文字列リテラル 柔軟性構文を提供することができます何かを探しています。

+0

't'を' Template( "$ {noun} ification") 'として直接インスタンス化しないのはなぜですか? – vmonteco

+0

@vmonteco 'nouns'がリストの場合、' Template( "$ {nouns.as_ul}") ';と書くことができます。出力は大きな順序付けられていないリストになります。 HTMLテンプレートの中で '$ {nouns.as_ul}'を想像してみてください。私は奇妙な '{%n for n}%}

  • {{n}}
  • {%endfor%}'それのケア、素敵で清潔。 – isar

    +0

    そして、これで何を達成しようとしていますか? Webアプリケーションですか? – vmonteco

    答えて

    2

    直接の回答ではありませんが、テンプレート文字列を使用しないことをおすすめします。

    def bold(t): 
        return f"<b>{t}</b>" 
    
    noun = 'Egg' 
    
    print(f"{bold(noun)}ification") 
    

    実行:

    <b>Egg</b>ification 
    

    あなたではなく、より強力なテンプレートメカニズム、私は非常にお勧めしたい場合は、Python 3.6以降、使用のF-文字列を使用している場合

    Jinja2

    関連する問題