Pythonの文字列を連結・結合する方法はいくつか用意されています。ここではその方法を全て解説します。
1. +演算子と+=演算子で連結/結合
Pythonでは、文字列同士は、代入演算子「+」で連結することができます。これは最も基本となる方法です。なお、演算子については「Pythonの演算子の一覧と分かりやすい解説」をご覧ください。
1.1. +演算子
Pythonでは+演算子で文字列と文字列を連結することができます。
str1 = '山田'
str2 = 'さん'
str3 = str1+str2 # ←文字列を+で連結
print(str3)
簡単ですね。連結する文字列はいくつあっても構いません。
''' 文字列はいくつでも連結することができます。 '''
str1 = '山田'
str2 = 'さん'
str3 = 'アップルパイが'
str4 = 'すき'
str5 = str1+str2+str3+str4
print(str5)
ただし、文字列と数値は連結することはできません。
''' 文字列と数値は連結することはできません。 '''
str1 = '山田さんの年齢は'
num = 25
str2 = 'です。'
str3 = str1+num+str2
文字列と数値を連結したい場合は、まずstr関数を使って数値を文字列に変換します。str関数は『Pythonの数値を文字列に変換する方法』でご確認ください。
''' 文字列と数値を連結する場合、数値を文字列化してから連結します。 '''
str1 = '山田さんの年齢は'
num = 25
str2 = 'です。'
str3 = str1+str(num)+str2 # ←str関数で数値を文字列化しています。
print(str3)
数値と文字列を連結することができましたね。
1.2. +=演算子
Pythonは、+=演算子を使って文字列同士を連結することもできます。+=演算子を使うと、+演算子と違って、左辺の変数が上書きされます。
実際に見てみましょう。
str1 = '山田'
str2 = 'さん'
str1+= str2 # ←文字列を+=で連結
print(str1) # 左辺の変数が上書きされる。
+演算子の時と違って、左辺のstr1が上書きされていることが確認できますね。これ以外は+演算子と全く同じように使うことができます。
''' このように書くと複数連結できます。 '''
str1 = '山田'
str2 = 'さん'
str3 = 'アップルパイが'
str4 = 'すき'
str1+= str2+str3+str4 # ←文字列を+=で連結
print(str1)
もちろん、文字列と数値を連結する時は数値をstr関数で文字列化する必要があるのも同じです。
''' 文字列と数値を連結する時は、数値をstr関数で文字列化します。 '''
str1 = '山田さんの年齢は'
num = 25
str2 = 'です。'
str1 += str(num)+str2
print(str1)
2. formatメソッドとformat関数で連結/結合
2.1. formatメソッド
Pythonの文字列メソッドであるformatメソッドを使うと、より自由度の高い文字列や数値の連結をすることができます。詳しくは「Pythonのprintのformat」で解説しているので、ここではいくつかの例を紹介します。
例えば、次のように文字列の中に任意の文字列を埋め込むという形で連結することができます。
''' formatメソッドを使うとさらに自由度の高い連結が可能です。 '''
text_a = "チューリップには{}と{}と{}があります。"
word_a = "赤"
word_b = "青"
word_c = "黄"
print(text_a.format(word_a, word_b, word_c))
formatメソッドを使えば数値を連結する時もstr関数で数値を文字列化する手間は不要です。
''' formatメソッドでは文字列も数値も自由に連結することができます。'''
name = "山田"
age = 30
point = 100.25
text = "{}選手、年齢{}才の得点は{}点でした。"
result = text.format(name, age, point)
print(result)
さらにformatメソッドには、様々な操作が用意されており、単に連結するだけでなく色々な見せ方ができるようになります。
''' 数値を様々に加工して連結することもできます。'''
population = 3000000
b_rate = 8.5
text = '東京の人口は{:,}人で、出生率は{:-^10.2f}です。'
print(text.format(population, b_rate))
2.2. format関数で連結・結合
formatメソッドと同じく、文字列と数値を連結する時にstr関数の代わりにformat関数を使うと、数値を様々に加工した上で連結することができます。
''' format関数を使うと数値を様々な方法で加工することができます。'''
int = 1000
float = 0.25
str1 = '平均点は'
str2 = '標準偏差は'
text = str1 + format(int, '05') +'です。' + str2 + format(float, '.5f') + 'です。'
print(text)
3. f文字列で連結/結合【Python 3.6 以降】
Python3.6からは、f文字列を使って、文字列を連結できるようになりました。以下のように使います。
f"{変数}{変数}{変数}"
例を見てみましょう。
a = "これは"
b = "ペン"
c = "です。"
text = f"{a}{b}{c}"
print(text)
それぞれの文字列が連結されています。
f文字列は、+演算子やformatメソッドを使う方法よりも処理速度が速く、よりPythonらしい書き方です。次のように、文字列も数値も、型を気にせずに連結することができます。
a = "今は"
b = 21
c = "世紀です。"
text = f"{a}{b}{c}"
print(text)
「+」演算子では、一度、数値を文字列に変換してから連結するのに対して、f文字列では、そのような手間がかかりませんので便利ですね。もちろんformatメソッドと同じ記法で、数値を加工して出力することもできます。
''' 数値を様々に加工して連結することもできます。'''
population = 3000000
b_rate = 8.5
print(f'東京の人口は{population:,}人で、出生率は{b_rate:-^10.2f}です。')
4. リストを連結/結合して文字列化【joinメソッド】
joinメソッドを使うと、文字列のリストやタプルを一つの文字列に連結することができます。次のように書きます。
"区切り文字".join(リストまたはタプル)
「Pythonのjoinメソッド」で詳しく解説しているので、詳細はそちらでご確認ください。ここでは、いくつか例を書いておきます。
#リストを作ります。
list = ["Tom", "Jerry", "Betty"]
#join()メソッドでリスト内の文字列を連結します。
string = ", ".join(list)
#確認しましょう。
print(string)
区切り文字は自由に設定することができます。
#リストを作ります。
list = ["Tom", "Jerry", "Betty"]
#それぞれjoin()メソッドで違う区切り文字を入れて連結します。
string_a = " ".join(list) #空白区切り
string_b = " and ".join(list) # and 区切り
#確認しましょう。
print(string_a)
print(string_b)
数値を含むリストを文字列化したい場合は、次のようにmap関数と組み合わせて使います。
''' map関数を使えば、数値を含むリストでもjoinメソッドで文字列化できます。 '''
list = ['a', 1, 'b', 2]
map_list = map(str, list)
print(' and '.join(map_list))
詳しくは「Pythonのjoinメソッド」をご確認ください。
5. まとめ
文字列の連結/結合方法を複数紹介しました。
最初は+演算子を使った方法からはじめ、formatメソッド、f文字列を使った方法を使えるようになることを目指しましょう。また、リストやタプルなどに格納された文字列を連結して一つの文字列にするにはjoinメソッドを使います。こちらもしっかり確認しておきましょう。
初心者の頃は、混乱してしまいそうですが、自分でコードを書きながら調べたり検索したりすると自然と身についていきますので心配はいりません。
一歩ずつ上達していきましょう。
コメント