Pythonの文字列連結(文字列結合): +演算子/join関数/format関数/f-strings

Pythonの文字列連結(文字列結合): +演算子/join関数/format関数/f-strings
目次

Pythonで良く使う文字列操作の備忘メモです。今回はPythonで文字列連結(文字列結合)の方法を紹介します。 なお、ここではPythonのバージョンは 3.x 系を想定しています。

‘+’ 演算子で連結する

まず一番シンプルなのが + 演算子を使った文字列結合になります。 プログラミング言語によっては + 演算子で文字列結合ができない言語も存在しますが、Pythonは問題ありません。

1a = 'aaa'
2b = 'bbb'
3c = 'ccc'
4txt = a + b + c
5print(txt)
6
7> aaabbbccc

文字列リテラル同士で連結する

Pythonは文字列リテラル同士であれば + 演算子を使わなくても、文字列同士を連結することができます。 ただ、たいていは変数に格納された文字列を使うケースが多いので、正直この使い方をした経験はありません。

1txt = 'aaa' 'ccc'
2print(txt)
3
4> aaacccc

リストをjoin()関数で連結する

次にリストに格納された文字列の要素を連結します。 以下のようにfor文で連結することもできますが、記述が冗長になります。

1arr = ['aaa', 'bbb', 'ccc']
2txt = ''
3for t in arr:
4    txt += t
5print(txt)
6
7> aaabbbccc

ここで、 str 型の join() 関数を使うことで簡単に連結できます。

1arr = ['aaa', 'bbb', 'ccc']
2# 空文字で文字列結合する
3txt = ''.join(arr)
4print(txt)
5
6> aaabbbccc

上の例では空文字('')によって文字列を結合していますが、任意の結合文字を指定することができます。 例えば、カンマ区切りでの文字列として結合するためには、以下のように実装します。

1arr = ['aaa', 'bbb', 'ccc']
2txt = ','.join(arr)
3print(txt)
4
5> aaa,bbb,ccc

format()関数で連結する

format() 関数は文字列の書式変換をするための関数ですが、この関数の最終的なアウトプットは文字列なので、連結のために使うこともできます。 テンプレート文字列中の {} の登場する箇所に対して、引数に与えられた変数が順番に展開されていきます。

1a = 'aaa'
2b = 'bbb'
3c = 'ccc'
4txt = '{}{}{}'.format(a, b, c)
5print(txt)
6
7> 'aaabbbccc'

{0} のように数値を与えることで、任意の順番で変数を展開したり、変数を繰り返しで展開することも可能です。

1a = 'aaa'
2b = 'bbb'
3c = 'ccc'
4txt = '{0}{2}{1}'.format(a, b, c)
5print(txt)
6
7> 'aaacccbbb'

f-stringsで連結する

Python 3.6 以上では format() 関数をより使いやすくした f-strings(フォーマット済み文字列リテラル) を使うことができます。 これは文字列リテラルのクォートの前に f または F を付与するだけで使うことができます。 f-strings の中では任意の変数を展開もできますし、{} の中で任意の処理を呼び出すこともできます。

1a = 'aaa'
2b = 'bbb'
3c = 'ccc'
4txt = f'{a}{b}{c}'
5print(txt)
6
7> 'aaabbbccc'