Pythonで文字列を連結または結合する方法: +演算子、join, format, f文字列など
- 作成日: 2021-07-09
- 更新日: 2023-12-26
- カテゴリ: Python
Pythonで文字列を連結・結合する
Pythonで文字列を連結・結合するには+
演算子や+=
演算子、join()
, format()
などを使います。
これらの演算子やメソッドを使うことで文字列を連結したり結合することが可能です。
結論から言うとPythonで文字列を連結・結合するには↓のようにします。
s = 'Hello, '
result = s + 'World!' # +演算子で結合
print(result)
# Hello, World!
s = 'Hello, '
s += 'World!' # +=演算子で連結
print(s)
# Hello, World!
lis = ['2100', '01', '01']
s = '-'.join(lis) # join()で結合
print(s)
# 2100-01-01
s = 'Hello'
result = '{}, World!'.format(s) # format()で連結
print(result)
# Hello, World!
s = 'Hello'
result = f'{s}, World!' # f文字列で連結
print(result)
# Hello, World!
この記事ではPythonによる文字列の連結または結合する方法を具体的に解説します。
具体的には↓を見ていきます。
- +演算子による結合
- +=演算子による結合
- join()による結合
- format()による結合
- f文字列による結合
関連記事
Pythonで文字列抽出【インデックスとスライス】
Pythonで文字列を複数の区切り文字で分割(re.split)
Pythonではこんなに簡単に文字列を検索できます: in演算子, find, reの正規表現
Pythonによる文字列の分割: 区切り文字列、正規表現、改行などによる分割方法を解説
Pythonの文字列の使い方を簡単にまとめた
Pythonで文字列を置換する具体的な方法(replace, re.sub)
Pythonのjoinで文字列を結合する
+演算子による結合
Pythonの文字列(str
)は+
演算子で結合することができます。
文字列同士を+
演算子で演算することで結合できます。
s = 'Hello, ' + 'World!'
print(s)
# Hello, World!
文字列を変数に保存した場合も、+
演算子で結合できます。
s1 = 'Hello, '
s2 = 'World!'
s3 = s1 + s2
print(s3)
# Hello, World!
文字列以外のオブジェクト(f
文字列を除く)とは連結できません。
たとえば文字列とNone
オブジェクトを連結しようとすると↓のようにエラーになります。
try:
s = 'Hello, ' + None
except TypeError as e:
print(e)
# can only concatenate str (not "NoneType") to str
↑の「can only concatenate str (not "NoneType") to str
」は和訳すると「文字列に連結できるのは文字列(Noneじゃない)だけです」となります。
None
オブジェクトやTrue
, False
などのオブジェクトを文字列に連結させたい場合は、これらのオブジェクトをstr()
に渡します。
str()
にオブジェクトを渡すとそのオブジェクトは文字列に変換されます。よって文字列と連結することが出来ます。
s = 'Hello, ' + str(None)
print(s)
# Hello, None
s = 'Hello, ' + str(True)
print(s)
# Hello, True
s = 'Hello, ' + str(False)
print(s)
# Hello, False
+=演算子による結合
+=
演算子を使うと文字列に別の文字列を連結することができます。
s = 'Hello, '
s += 'World!'
print(s)
# Hello, World!
Pythonの文字列はイミュータブルなので↑のような連結は直感とはやや反するかもしれません。
これは変数内に保存されているオブジェクトの変数ごとのすげ替えが起こっているためです。
これはid()
でアイデンティティを確認するとわかります。
s = 'Hello, '
print(id(s))
# 140656086881136
s += 'World!'
print(id(s))
# 140656085968880
id()
で取得できるアイデンティティの値は変数(PyObject
)のポインタの値です。
つまり↑のコードでは+=
演算子で加算代入を行うことで変数自体のすげ替えが起こっていると言えます。
ちなみにこれは文字列だけでなく整数でも同様です。
Pythonの+=
演算子はインプレース(in-place
)演算子の一種で、これはたとえば
x += y
という演算は
x = operator.iadd(x, y)
という式と等価になります。
そのため+=
による加算代入によってx
のアイデンティティが新しく更新されるということになります。
join()による結合
文字列のメソッドをjoin()
を使うと、文字列とリスト等に保存されている文字列を結合するすることができます。
関連記事
Pythonのjoinで文字列を結合する
使い方は↓の通りです。
文字列.join(イテラブルオブジェクト)
文字列とリストの文字列を結合するには↓のようにします。
s = '-'.join(['2100', '01', '01'])
print(s)
# 2100-01-01
↑のように文字列がリストの中の文字列のセパレーターとして連結されます。
↑の場合、文字列は-
ですが、これが2100
や01
や01
などの文字列の区切り文字として連結されています。
文字列とタプルの文字列を結合するには↓のようにします。
s = ','.join(('Alice', 'Bob', 'Taro'))
print(s)
# Alice,Bob,Taro
文字列とジェネレーターを結合するには↓のようにします。
g = (str(i) for i in range(3))
s = '-'.join(g)
print(s)
# 0-1-2
いずれの場合もリストなどの要素は文字列である必要があります。
文字列でなかった場合は↓のようなエラーになります。
try:
'-'.join([None])
except TypeError as e:
print(e)
# sequence item 0: expected str instance, NoneType found
↑のエラーを和訳すると「文字列のオブジェクトを期待しましたが、Noneが見つかりました」となります。
format()による結合
文字列のメソッドformat()
を使うと、文字列の中に文字列を連結させることが出来ます。
format()
は↓のように使います。
文字列.format(引数)
たとえば文字列に別の文字列s1
を連結させたい場合は↓のようにします。
s1 = 'Hello'
s2 = '{}, World!'.format(s1)
print(s2)
# Hello, World!
↑の場合、「{}, World!
」という文字列にs1
の文字列が連結されています。
連結される場所は{}
が書かれている部分です。この部分にs1
がぶち込まれて新しく文字列が生成されます。
🦝 < ぶち込まれてって
🐭 < 乱暴なかたね
{}
は複数使うことが出来ます。その場合、文字列の先頭から引数の順番で埋め込まれていきます。
s1 = 'Hello'
s2 = 'World'
s3 = '{}, {}!'.format(s1, s2)
print(s3)
# Hello, World!
キーワード引数を埋め込むこともできます。
その場合は↓のようにします。
s1 = 'Hello'
s2 = 'World'
s3 = '{one}, {two}!'.format(one=s1, two=s2)
print(s3)
# Hello, World!
↑の場合、{one}
という部分にs1
が、{two}
という部分にs2
が埋め込まれます。
キーワード引数を使う場合は引数の順番は順不同でもOKです。
s1 = 'Hello'
s2 = 'World'
s3 = '{one}, {two}!'.format(two=s2, one=s1)
print(s3)
# Hello, World!
f文字列による結合
format()
と役割が似ていますが、Pythonにはf
文字列(フォーマット済み文字列リテラル)というものがあり、これを使っても文字列を連結・結合することが出来ます。
f
文字列は↓のように使います。
f文字列
たとえば文字列の中に文字列s1
を埋め込みたい場合は↓のようにします。
s1 = 'Hello'
s2 = f'{s1}, World!'
print(s2)
# Hello, World!
↑の場合「f'{s1}, World!'
」というのがf
文字列です。
{s1}
で文字列s1
を埋め込んでいます。
その結果はs2
で返ってきて、中身は「Hello, World!
」になります。
f
文字列の中には↓のように複数の文字列を埋め込むことが出来ます。
s1 = 'Hello'
s2 = 'World'
s3 = f'{s1}, {s2}!'
print(s3)
# Hello, World!
おわりに
今回はPythonの文字列の連結・結合について見てみました。
文字列の連結・結合はPythonでは頻出の処理かと思います。
🦝 < 連結して結合しよう
🐭 < お、おう……