Pythonでは、通常、文字列の連結は +
演算子を用いて行います。
しかし、+
演算子はご存知のように、整数や浮動小数点数の足し算にも使われます。
では、オペランドの両側に文字列とintがある場合はどうなるのでしょうか?
Pythonは動的型付け言語なので、コンパイル時にエラーになることはなく、Runtime Errorが発生します。
(具体的には、TypeError例外が発生します。
以下のスニペットがこれを証明しています。
a = "Hello, I am in grade "
b = 12
print (a + b)
|
結果は以下の通りです。
Traceback (most recent call last): File "concat.py" , line 5 , in <module>
print (a + b)
TypeError: can only concatenate str ( not "int" ) to str
|
つまり、整数と文字列を直接連結することはできないので、オペランドを操作して連結できるようにする必要があります。
これには複数の方法があります。
1. str()の使用
str()` 関数で整数を文字列に変換します。
そして、この新しい文字列を他の文字列と連結すると、次のような出力が得られます。
print (a + str (b))
|
結果は以下の通りです。
Hello, I am in grade 12 |
これは、整数を文字列に変換する最も一般的な方法です。
しかし、他の方法も使うことができます。
2. format() の使用法
a = "Hello, I am in grade "
b = 12
print ( "{}{}" . format (a, b))
|
出力は前と同じままです。
3. 書式指定子 ‘%’ の使用
a = "Hello, I am in grade "
b = 12
print ( "%s%s" % (a, b))
|
aと
bの両方が文字列であることを指定することもできますが、C 言語風の書式指定子 (
%d,
%s`) を使って、整数を文字列に連結することもできます。
print ( '%s%d' % (a,b))
|
上記のコードでは、出力は変わりません。
4. f-stringsの使用
Python 3.6以降では、Pythonのf-stringsを使って、整数と文字列を連結することができます。
a = "Hello, I am in grade "
b = 12
print (f "{a}{b}" )
|
5. print()を使った文字列の表示
連結された文字列を直接印刷したい場合は、print()
を使って連結を行うことができます。
a = "Hello, I am in grade "
b = 12
print (a, b, sep = "")
|
print()のデフォルトのセパレータはスペース (" ") なので、ここでは
aと
bをヌル文字列のセパレータ (
sep`) で連結しています。
まとめ
今回は、様々な方法で整数を文字列に連結する方法を学びました。