文字列出力
Python で文字列を出力するときには print() を使用します。
これまでの例で何度か使ってきているように print()関数は変数や文字列を引数に与えると、それを画面に表示します。
code: python
a = 'Hello World!'
>> print(a)
Hello World!
%演算子
Python では文字列の中に、別の文字列や変数を埋め込みたいときに%演算子 を使って表します。
code: python
>> whose = 'my'
>> a = 'This is %s book.' % whose
>> print(a)
This is my book.
扱うデータの型によって%に続く文字が異なります。
table: %演算子
変換 意味
d 符号付き 10 進整数。
o 符号付き 8 進数。
u 旧式の型。 d と同じ。
x 符号付き 16 進数 (小文字)。
X 符号付き 16 進数 (大文字)。
e 指数表記の浮動小数点数 (小文字)。
E 指数表記の浮動小数点数 (大文字)。
f 10 進浮動小数点数。
F 10 進浮動小数点数。
g 浮動小数点数。指数部が -4 以上または精度以下の場合には小文字指数表記、
それ以外の場合には10進表記。
G 浮動小数点数。指数部が -4 以上または精度以下の場合には大文字指数表記、
それ以外の場合には10進表記。
c 文字一文字 (整数または一文字からなる文字列を受理します)。
r 文字列 (Python オブジェクトを repr() で変換します)
s 文字列 (Python オブジェクトを str() で変換します)。
% 引数を変換せず、返される文字列中では % 文字 になります。
formatメソッド
文字列には formatメソッドもあります。
%演算子では与えるデータの型によって%に続く文字をプログラマが選ばないといけなかったのですが、
この formatメソッドを使うとより簡単に表記できようになります。また、処理速度も若干速くなります。
前述の%演算子での例をformatメソッドに書き換えてみましょう。
code: python
>> whose = 'my'
>> a = 'This is {} book.'.format(whose)
>> print(a)
This is my book.
ここで、文字列中にある {} を置換フィールド といいます。 この置換フィールドと、formatメソッドに引数として与えたデータが順に置換されて埋め込まれます。データの型はformatメソッドが自動的に処理してくれます。
置換フィールドに引数位置を指定
ここまでの例では1つのデータを文字列に埋め込んでいるだけでした。
次のような例を考えてみましょう。
code: python
>> A = 'Osaka'
>> b = '3-4-9 801 Kwaramachi Chuou-ku {}-shi {}-fu'.format(A,A)
>> print(b)
1-3-2 Kwaramachi Chuou-ku Osaka-shi Osaka-fu
この例では、置換フィールドが2つあるので、同じデータを2つ与える必要があります。
少ないデータであれば構いませんが、置換フィールドが多数になってくる可読性が悪くなって間違いも起こりやすくなります。
こんなときには、置換フィールドに引数位置を指定します。
code: python
>> A = 'Osaka'
>> b = '3-4-9 801 Kwaramachi Chuou-ku {0}-shi {0}-fu'.format(A)
この例のように置換フィールドが複数あっても、引数位置を指定していれば、同じデータは同じ位置のデータと置換することになるので、formatメソッドに与えるデータの数は1つですみます。
フォーマット文字リテラル
置換フィールドを使うことで、%演算子よりかなり可読性が良くなりますが、
それでも実際に置換される場所と定義する場所が離れていることには違いはありません。
こうした理由から、Python3.6からフォーマット文字リテラル(f-string)という置換方法が導入されました。
例を見てみましょう。
code: python
>> name = 'Freddie Mercury'
>> born = 'Sep 5 1946'
>> die = 'Nov 24 1991'
>> queen = f"Queen's main vocal is {name}({born}-{die})."
>> print(queen)
Queen's main vocal is Freddie Mercury(Sep 5 1946-Nov 24 1991).
フォーマット文字リテラルでは文字列の先頭に f の文字をつけます。
フォーマット文字リテラルを使うと、置換フィールドの中に変数名を指定できるようになるので、
可読性が更に向上しているのがわかると思います。
実践ドリル