1. ホーム
  2. パイソン

[解決済み】python-3.xで辞書を使用して文字列をフォーマットするにはどうすればよいですか?

2022-04-03 13:35:41

質問

私は、文字列の書式設定に辞書を使用することが大好きです。使用する文字列のフォーマットを読み取るのに役立つだけでなく、既存の辞書を活用することもできます。例えば

class MyClass:
    def __init__(self):
        self.title = 'Title'

a = MyClass()
print 'The title is %(title)s' % a.__dict__

path = '/path/to/a/file'
print 'You put your file here: %(path)s' % locals()

しかし、同じことをするためのpython 3.xの構文がわかりません(あるいは、それが可能かどうかもわかりません)。私は次のようにしたいと思います。

# Fails, KeyError 'latitude'
geopoint = {'latitude':41.123,'longitude':71.091}
print '{latitude} {longitude}'.format(geopoint)

# Succeeds
print '{latitude} {longitude}'.format(latitude=41.123,longitude=71.091)

解決方法は?

質問がPython 3に特化しているので、ここでは 新しい f-string 構文 Python 3.6 以降で利用可能です。

>>> geopoint = {'latitude':41.123,'longitude':71.091}
>>> print(f'{geopoint["latitude"]} {geopoint["longitude"]}')
41.123 71.091

外側のシングルクォートと内側のダブルクォートに注意してください(その逆も可能です)。