【Python】文字列の結合・連結(joinメソッド)

Pythonにおける文字列の結合・連結のやり方について紹介します。



加算演算子による結合と乗算演算子による繰り返し

加算演算子+によって文字列の連結ができ、乗算演算子*によって文字列の繰り返しができます。

またスペース、タブ、改行などの空白文字を間に挟んで並べた文字列リテラルの連結もできます。

コード例


s1 = 'ABC' + 'DEF' # 加算演算子による結合
s2 = 'ABC' * 3     # 乗算演算子による繰り返し
s3 = 'ABC' 'DEF'   # 空白文字による連結

print(f's1 = {s1}')
print(f's2 = {s2}')
print(f's3 = {s3}')

実行結果

s1 = ABCDEF
s2 = ABCABCABC
s3 = ABCDEF

累算代入による結合と繰り返し

上のコードのs3の空白文字による文字列リテラルの連結は「字句上の連結」で「演算」ではないため変数には適応することはできません。


s4 = 'ABC'
s5 = 'DEF'
s6 = s4 s5   # s4とs5が連結されることはない

累算代入を行う+=と*=も文字列に対して適応できます。

コード例


# 累算代入による結合と繰り返し

s1 = 'ABC'
s1 += 'DEF'

s2 = 'ABC'
s2 *= 3

print(f's1 = {s1}')
print(f's2 = {s2}')

実行結果

s1 = ABCDEF
s2 = ABCABCABC


joinメソッドによる結合

イテラブルオブジェクトとして与えられた文字列の集まりとしてそれらを順に連結した文字列を生成するのがjoinメソッドです。

str.join(iterable)

区切り文字列.join(連結する文字列を格納したイテラブルオブジェクト)

iterable内に含まれる文字列をstrで区切って先頭から順に連結した文字列を返却します。

なおiterable内に非文字列が含まれていた場合はtypeError例外を送出します。

コード例


s = ('one', 'two', 'three', 'four')

print(''.join(s))  # 区切らず結合
print(' '.join(s)) # スペース' 'で区切って結合
print(','.join(s)) # コンマ','で区切って結合

実行結果

onetwothreefour
one two three four
one,two,three,four

文字列自体もイテラブルオブジェクトなのでjoinメソッドで連結できます。

一般的に加算演算子や累算代入による結合よりもjoinメソッドによる結合のほうが高速です。

コード例


s = 'XYZ'

print(''.join(s))  # 区切らず結合
print(' '.join(s)) # スペース' 'で区切って結合
print(','.join(s)) # コンマ','で区切って結合

実行結果

XYZ
X Y Z
X,Y,Z


内包表記による結合

数値などの非文字列の集まりを結合したい場合は内包表記を使います。

コード例


list = [1, 2, 3]

print(''.join([str(_) for _ in list]))  # 区切らず結合
print(' '.join([str(_) for _ in list])) # スペース' 'で区切って結合
print(','.join([str(_) for _ in list])) # コンマ','で区切って結合

実行結果

123
1 2 3
1,2,3

f文字列による文字列の結合

f文字列を使うことで、文字列の結合だけでなく文字列と数値などの非文字列との結合も簡単にできます。

コード例


s1 = 'ABC'
s2 = 'DEF'
i  = 99

print(f'{s1}{s2}')  # 文字列 + 文字列
print(f'{s1}{i}{s2}') # 文字列 + 整数 + 文字列

実行結果

ABCDEF
ABC99DEF