Pythonの文字列連結:+演算子、f-string、join()の使い方

Pythonでは、複数の文字列を結合して一つの新しい文字列を作成する操作(文字列連結)が頻繁に必要になります。例えば、姓と名を結合して氏名を作成したり、ログメッセージを組み立てたりする場合です。

文字列を連結するには、+ 演算子、f-string、join() メソッドなど、いくつかの方法があります。この記事では、それぞれの方法と適切な使い分けについて解説します。

目次

1. + 演算子による連結

最も直感的で基本的な方法は、+ 演算子(加算演算子)を使用することです。文字列同士を + で結ぶと、それらが順番に連結されます。

# 'Hello' と 'World' を連結する
greeting_part1 = "Hello"
greeting_part2 = "World"

# スペースも文字列として連結する
full_greeting = greeting_part1 + ", " + greeting_part2 + "!"

print(full_greeting)

実行結果:

Hello, World!

この方法は、2つか3つの少数の文字列を単純に連結する場合には手軽です。

2. 文字列と数値の連結 (TypeErrorとf-string)

+ 演算子を使用する際に最も一般的なエラーは、文字列(str)と数値(intfloat)を直接連結しようとすることです。

user_name = "Agent"
user_id = 777

# TypeError: can only concatenate str (not "int") to str
# log_message = "User: " + user_name + ", ID: " + user_id 

Pythonは、異なる型のデータを + で自動的に連結することはできません。この問題を解決するには、数値を明示的に文字列に変換する必要があります。

str() を使った連結(従来の方法)

str() 関数を使って数値を文字列に変換してから + で連結する方法です。

# str(user_id) で 777 を "777" に変換する
log_message = "User: " + user_name + ", ID: " + str(user_id)

print(log_message)

実行結果:

User: Agent, ID: 777

f-string を使った連結(推奨される方法)

str() を使う方法は動作しますが、連結する変数が増えると +str() が多くなり、コードが読みにくくなります。

このような場合、**f-string(書式化文字列リテラル)**の使用が強く推奨されます。

f-stringは、文字列の開始クォートの前に f を置き、文字列内に {変数名} を埋め込むことで、自動的に変数の値を文字列に変換して展開します。

user_name = "Agent"
user_id = 777
login_attempts = 3.5 # floatでも問題ない

# f-string を使用
log_message_f = f"User: {user_name}, ID: {user_id}, Attempts: {login_attempts}"

print(log_message_f)

実行結果:

User: Agent, ID: 777, Attempts: 3.5

+str() を使うよりもはるかに簡潔で、可読性が高いことがわかります。

3. join() メソッドによるリストの連結

for ループなどで生成した多数の文字列(リストなど)を連結する場合、+ 演算子を繰り返し使うのは非効率です。

このような場合は、join() メソッドを使用するのが標準的です。

"区切り文字".join(文字列のリスト)

このメソッドは、リスト内の各文字列を「区切り文字」で連結した一つの文字列を返します。

# ログの断片がリストに格納されている
log_parts = ["2025-11-11", "ERROR", "AuthService", "Login failed"]

# 1. カンマ区切り (CSV) で連結
csv_line = ",".join(log_parts)
print(f"CSV: {csv_line}")

# 2. ハイフン区切りで連結
hyphen_line = " - ".join(log_parts)
print(f"Log: {hyphen_line}")

# 3. 区切り文字なしで連結
no_space_line = "".join(log_parts)
print(f"No Space: {no_space_line}")

実行結果:

CSV: 2025-11-11,ERROR,AuthService,Login failed
Log: 2025-11-11 - ERROR - AuthService - Login failed
No Space: 2025-11-11ERRORAuthServiceLogin failed

join() は非常に高速に動作するため、多数の要素を連結する際の第一選択肢となります。

まとめ

Pythonでの文字列連結には、目的に応じて3つの方法を使い分けます。

  • + 演算子: 2~3個の少数の文字列を単純に連結する場合。
  • f-string (f"..."): 変数(特に数値)を文字列に埋め込む場合。可読性が高く、最も推奨される方法の一つ。
  • join() メソッド: リストやイテラブルに格納された多数の文字列を、特定の区切り文字で効率的に連結する場合。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次