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`) で連結しています。
まとめ
今回は、様々な方法で整数を文字列に連結する方法を学びました。