3

Python のFormatter クラスを使用すると、「組み込みの format() メソッドと同じ実装を使用して、独自の文字列書式設定動作を作成およびカスタマイズできます」。一人でもできるので

>>> '{}'.format(3.14)
'3.14'

>>> format(3.14, '')
'3.14'

私は次のこともうまくいくと思っていました:

>>> string.Formatter().format('{}', 3.14)
(…)
KeyError: ''

Formatter を使用して、この非常に一般的で単純な書式設定文字列を処理する標準的な方法はありますか? または、Python のように動作する前に Formatter をカスタマイズする必要がありformat()ますか? これは本当に堅牢な方法で実行可能ですか (スレッドセーフなど)?

4

1 に答える 1

2

{}Python 2.6/3.0 の新しいスタイルの文字列フォーマットの元の実装では、空のテンプレートは許可されませんでした。それらを許可する変更はissue 5237: Allow auto-numbered replacement fields in str.format() stringsとして文書化されています。そのページで、Eric V. Smith からのメッセージ 83559 はstring.Format、自動番号付けもサポートする必要があるかどうかという質問を熟考し(彼は を意味すると思いますstring.Formatter)、それに反対する結論を出しています。

問題 13598でパッチが提案されています: string.Formatter は空の中括弧 "{}" をサポートしていません

于 2013-06-24T11:37:25.140 に答える