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'