文字列

【Python】文字列を連結・結合する方法

【Python】文字列を連結・結合する方法

Pythonで文字列を連結・結合する方法について解説します。

文字列を連結・結合する方法

プログラミングでは、文字列や文字列のリストを連結・結合したいといった場面に多く直面します。本記事では、Pythonで文字列を連結・結合する各種方法について説明します。

文字列を連結・結合する

複数の文字列を連結・結合する方法

複数の文字列を連結・結合する場合には、以下のように+演算子+=演算子文字列リテラルの列挙という方法があります。

s1 = "a"
s2 = "b"
s3 = "c"

# +演算子で文字列を連結・結合する
temp_str = s1 + s2 + s3
print(temp_str)

# +=演算子で文字列を連結・結合する
s4 = "d"
temp_str += s4
print(temp_str)

# 文字列リテラルを連続して列挙して連結・結合する
temp_str = "e" "f" "g"
print(temp_str)
【実行結果】
abc
abcd
efg

上記例のように複数文字列を+や+=の演算子で文字列を連結・結合できます。

また、文字列リテラルを単純に並べるだけでも連結・結合することができます。文字列リテラルの列挙の場合は、間にスペースやバックスラッシュによる改行があっても問題ありません。

数値と文字列を連結・結合する方法

数値と文字列を連結・結合する場合には、単純に+演算子等を適用するとエラーとなります。

s1 = "a"
n1 = 100

# そのまま連結・結合しようとするとエラーとなる
temp_str = s1 + "_" + n1
print(temp_str)
【実行結果】
TypeError: can only concatenate str (not "int") to str

上記のように異なる型の連結・結合ではTypeErrorとなってしまいます。そのため、数値と文字列を連結・結合して文字列にするには、以下のようにstrで型変換します。また、formatやf-stringを使う方法もあります。

s1 = "a"
n1 = 100

# +演算子で文字列と数値を連結・結合する
temp_str = s1 + "_" + str(n1)
print(temp_str)

# +=演算子で文字列を連結・結合する
n2 = 0.01
temp_str += "_"
temp_str += str(n2)
print(temp_str)

# formatを使用して連結・結合する
temp_str = "{}_{}".format(s1, n1)
print(temp_str)

# f-stringを使用して連結・結合する
temp_str = f"{s1}_{n1:05}_{n2:.5f}"
print(temp_str)
【実行結果】
a_100
a_100_0.01
a_100
a_00100_0.01000

上記のように数値を結合するには、事前にstrに渡して文字列に変換します。

また、formatやf-stringを使用して連結することで数値のフォーマットを変えつつ結合するといったことも簡単にできます。formatやf-stringについては「文字列のフォーマットを整える方法」にまとめていますので興味があれば参考にしてください。

リストを連結・結合して文字列にする方法

リストの文字列や数値を連結・結合して文字列にする場合には、strクラスのjoinメソッドを使用します。

文字列のリストを文字列に連結・結合する方法

joinメソッドで文字列のリストを結合する場合は、以下のようにします。

sample_list = ["Pytho", "Java", "Go", "C", "C#"]

# 文字列をそのまま結合
print("".join(sample_list))

# 区切り文字でjoinで結合
print(",".join(sample_list))
【実行結果】
PythoJavaGoCC#
Pytho,Java,Go,C,C#

文字列を単純につなげたい場合は、空文字(“”)のjoinメソッドに対象リストを渡すことで結合することができます。

区切り文字を指定したい場合は、区切り文字の文字列のjoinメソッドに結合対象のリストを渡します。上記例は、”,”(カンマ)を区切り文字として結合した例ですが、もちろん他の区切り文字でも構いません。

数値のリストを文字列に連結・結合する方法

数値のリストに対して、単純にjoinを適用すると以下のようにエラーとなります。

sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 数値リストをjoinでそのまま連結することはできない
print(",".join(sample_list))
【実行結果】
TypeError: sequence item 0: expected str instance, int found

上記のように文字列ではないためTypeErrorとなってしまいます。

数値リストをjoinで結合する場合には、以下のように数値リストをstr()で文字列に変換してからjoinメソッドに渡します。リスト内包表記を使ってまとめて作成すると簡単です。

sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 数値リストをjoinで結合する場合はstrに変換してからjoinに渡す
print(",".join([str(i) for i in sample_list]))
【実行結果】
1,2,3,4,5,6,7,8,9,10

Note

str.joinの公式ドキュメントの記載はこちらを参照してください。

似たような処理でファイルパスを組み立てたい場合については「ファイルパスを組み立てる方法」にまとめていますので興味があれば参考にしてください。

まとめ

Pythonで文字列を連結・結合する方法について解説しました。

+演算子や+=演算子を使って単純に連結・結合する方法やリストを連結・結合するjoinメソッドについて例を使って使い方を説明しました。

是非使い方を覚えて効率よく文字列の連結・結合をしてもらえればと思います。