2008年9月5日金曜日

Python で文字列中の変数をフォーマットして置き換える

1. %演算子

2.3.6.2 文字列フォーマット操作 によると、

文字列および Unicode オブジェクトには固有の操作: % 演算子 (モジュロ) があります。(…)

format % values (format は文字列または Unicode オブジェクト)とすると、format 中の % 変換指定は values 中のゼロ個またはそれ以上の要素で置換されます。

うーむ、%演算子という独自のものがあるのか。(@_@;)

 

2. 数値で置き換える

文字列の中の変数が一つの場合、

a = 100
b = -200

print "Hello! %d" % a

結果、

Hello! 100

 

タプル、マップオブジェクト

文字列の中に変数が二つ以上ある場合、タプル、マップオブジェクトを使う。

# タプル
print "Hello! %d %d" % (a, b)
# マップオブジェクト
print "Hello! %(hoge)d %(piyo)d" % {'hoge':a, 'piyo':b}

マップオブジェクトを使うと、名前で参照できる。変数の数が多いときに使えばいいのかな。

結果、

Hello! 100 -200
Hello! 100 –200

 

2. 出力を整形する

%変換指定に、いろいろと付加する。

# 幅の指定
print "Hello! %10d %10d" % (a, b)
# 精度の指定
print "Hello! %10.2f %10.2f" % (a, b)
# 0 で数値の左を埋める
print "Hello! %010d %010d" % (a, b)
# 左寄せ
print "Hello! %-10d %-10d" % (a, b)
# 符号をつける
print "Hello! %+10d %+10d" % (a, b)

結果、

Hello!        100       -200
Hello!     100.00    -200.00
Hello! 0000000100 -000000200
Hello! 100        -200      
Hello!       +100       -200

 

3. 文字列で置き換える

文字列中で %s を使う。詳しくは、2.3.6.2 文字列フォーマット操作 を参照。

# 文字列
c = "HOGE"
print "Hello! %s" % c
print "Hello! %10s" % c
print "Hello! %-10s" % c

結果、

Hello! HOGE
Hello!       HOGE
Hello! HOGE      
Hello!       HOGE