Pythonの新しい文字列書式操作

Pythonのformatを使った新しい文字列の書式操作は、{}を使って次のようにして使います。

>>> '{0} + {1} = {2}'.format(1, 2, 1+2)
'1 + 2 = 3'

{0} {1} {2}が順になっている場合はポジション引数は省略可能です。

>>> '{} + {} = {}'.format(1, 2, 1+2)
'1 + 2 = 3'

キーワード引数は次のように使います。

>>> 'Hello {name}!'.format(name='John')
'Hello John!'

dxobを使って、10進表記、16進表記などでも表示できます。

>>> '{0:d} {0:x} {0:o} {0:b}`.format(15)
15 f 17 1111

#オプションで0xなどのプリフィックスが追加されます。

>>> '{0:#d} {0:#x} {0:#o} {0:#b}`.format(15)
15 0xf 0o17 0b1111

少し便利な機能として、1000ごとに,を追加することもできます。

>>> '{:,}`.format(1234567890)
1,234,567,890

%03.2f{:03.2f}と書き換えます。

>>> '{:05.2f}'.format(3.141592)
03.14

その他、詳細はリンク先を参照してください。

7.1. string — 一般的な文字列操作 — Python 2.7ja1 documentation
http://docs.python.jp/2/library/string.html


Python 3.0では%を使った書式指定より好ましい書き方とされています。

関連記事

PythonでUnicodeEncodeErrorとなる場合に
Pythonで端末のエンコーディング取得はgetpreferredencodingでできます。 >>> import sys >>> locale.getpreferredencoding() 'cp932' 「あいうえお」と表示するスクリプト(sample.py) # -*- coding: UTF-8 -*- s = u'あいうえお' print s コマンドプロンプ...

Pythonで全角を2文字として文字数を数える方法
Pythonの文字列はlen関数で文字数をカウントできますが、全角と半角の区別はしません。 >>> len(u'abcde') 5 >>> len(u'あいうえお') 5 これはこれで便利な実装なのですが、日本語のテキスト処理をしていると、等幅フォントを使ったときに幅をそろえたいなどで、全角を2文字として数えると何文字になるか調べたいことがあります。そういう場合にはunicodeda...

PythonでUnicodeのオブジェクトとコードポイントの変換
UnicodeオブジェクトをUnicodeコードポイントに変換 >>> ord(u'あ') 12354 UnicodeコードポイントをUnicodeオブジェクトに変換 >>> unichr(12354) u'\u3042' >>> print unichr(12354) あ 8ビット文字列にordを使うとASCIIコードを取得することもできます。 >>> ord('...

PythonのString Formattingを拡張
Python 3で追加されたformatを使うと文字列操作が便利になります。 使い方は次のような感じです。(参考:Pythonの新しい文字列書式操作) >>> '{0} + {1} = {2}'.format(1, 2, 1+2) '1 + 2 = 3' string.Formatterを継承すると、この文字列操作を拡張することができるそうです。 拡張の仕方は以下のような...

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です