'%'演算子を使用してstring formatsにオプションのキーを使用することはできますか? APIをPython 2.7で使用していますので、Advanced String Formattingを使用することはできません。'%'演算子を使用する文字列形式のオプションキー?
私の問題は以下の通りです:欠落している場合、私はユーザーに空の文字列を持ちたい
>>> import logging
>>> FORMAT = '%(asctime)-15s %(message)s %(user)s'
>>> logging.basicConfig(format=FORMAT)
>>> logging.warning("It works for:", extra={'user': 'me'})
2016-08-29 11:24:31,262 It works for: me
>>> logging.warning("It does't work!")
Traceback (most recent call last):
...
KeyError: 'user'
Logged from file <input>, line 1
。どうやってやるの?
私はdefaultdictで試したが、それは失敗します。
>>> import collections
>>> extra = collections.defaultdict(unicode)
>>> logging.warning("It does't work!", extra=extra)
Traceback (most recent call last):
...
KeyError: 'user'
Logged from file <input>, line 1
対照的に、Jinja2で、私たちが行うことができます:ここ
>>> import jinja2
>>> jinja2.Template('name: {{ name }}, email: {{ email }}').render(name="me")
u'name: me, email: '
=>も例外、ちょうど空の文字列(のために"Eメール")。
現時点では、オプションテンプレート変数についてはわかりません。しかし、あなたはこの種のようなものを試すことができます: 'logging.warning("これはうまくいきます: "、extra = {'user':ユーザー 'vars()else' '})' –
@Oluwafemi Sule:this私が望むものではありません。メッセージを記録するときに、* extra *属性を使用するかどうかを選択したいと考えています。しかし、ログ形式を使用している場合、余分な属性を報告したいと思います。私の編集でJinja2の動作も見てください。 –
辞書を繰り返してurの文字列を作成する – Mox