Pythonで文字列を連結・結合する方法について解説します。
Contents
文字列を連結・結合する方法
プログラミングでは、文字列や文字列のリストを連結・結合したいといった場面に多く直面します。本記事では、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
str.joinの公式ドキュメントの記載はこちらを参照してください。
似たような処理でファイルパスを組み立てたい場合については「ファイルパスを組み立てる方法」にまとめていますので興味があれば参考にしてください。
まとめ
Pythonで文字列を連結・結合する方法について解説しました。
+演算子や+=演算子を使って単純に連結・結合する方法やリストを連結・結合するjoinメソッドについて例を使って使い方を説明しました。
是非使い方を覚えて効率よく文字列の連結・結合をしてもらえればと思います。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。