1. ホーム
  2. python

[解決済み] 文字列の部分的な書式設定

2022-04-27 13:12:02

質問

文字列テンプレートのような高度な文字列書式設定メソッドで、文字列の部分的な書式設定を行うことは可能でしょうか? safe_substitute() 関数を使用できますか?

例えば、こんな感じです。

s = '{foo} {bar}'
s.format(foo='FOO') #Problem: raises KeyError 'bar'

解決方法は?

マッピングを上書きすることで、部分的にフォーマットするように仕向けることができます。

import string

class FormatDict(dict):
    def __missing__(self, key):
        return "{" + key + "}"

s = '{foo} {bar}'
formatter = string.Formatter()
mapping = FormatDict(foo='FOO')
print(formatter.vformat(s, (), mapping))

印刷

FOO {bar}

もちろん、この基本的な実装は、基本的なケースにしか正しく機能しません。