Python文字列を連結・結合する方法 – +演算子とjoinの使い分け

 

+演算子による文字列連結

最も直感的な文字列連結方法は+演算子を使用することです。

基本的な連結

# 2つの文字列を連結
text1 = "Hello"
text2 = "World"
result = text1 + " " + text2
print(result)  # Hello World

# 複数文字列の連結
first = "Python"
second = "は"
third = "楽しい"
message = first + second + third
print(message)  # Pythonは楽しい

文字列と数値の連結

# 数値を文字列に変換してから連結
name = "田中"
age = 25
message = name + "さんは" + str(age) + "歳です"
print(message)  # 田中さんは25歳です

join()メソッドによる効率的な連結

複数の文字列を連結する場合、join()メソッドが効率的です。

リストの文字列を連結

# リストの要素を連結
words = ["Python", "Java", "JavaScript"]
result = ", ".join(words)
print(result)  # Python, Java, JavaScript

# 空文字で連結
letters = ["A", "B", "C"]
result = "".join(letters)
print(result)  # ABC

改行で連結

# 改行文字で連結
lines = ["1行目", "2行目", "3行目"]
text = "\n".join(lines)
print(text)
# 1行目
# 2行目
# 3行目

f-string(フォーマット文字列)による連結

Python 3.6以降で推奨される方法です。

基本的なf-string

name = "山田"
age = 30
city = "東京"

# f-stringを使用
message = f"{name}さんは{age}歳で、{city}在住です"
print(message)  # 山田さんは30歳で、東京在住です

# 計算結果も埋め込み可能
x = 10
y = 20
result = f"{x} + {y} = {x + y}"
print(result)  # 10 + 20 = 30

書式指定付きf-string

# 小数点の桁数指定
price = 1234.567
formatted = f"価格: ¥{price:.2f}"
print(formatted)  # 価格: ¥1234.57

# 0埋め
number = 42
formatted = f"番号: {number:05d}"
print(formatted)  # 番号: 00042

format()メソッドによる連結

基本的なformat使用

# インデックス指定
template = "{0}さんは{1}歳です"
message = template.format("佐藤", 28)
print(message)  # 佐藤さんは28歳です

# キーワード指定
template = "{name}さんの職業は{job}です"
message = template.format(name="鈴木", job="エンジニア")
print(message)  # 鈴木さんの職業はエンジニアです

パフォーマンス比較と使い分け

大量文字列連結のパフォーマンス

import time

# 大量の文字列連結比較例
strings = ["文字列" + str(i) for i in range(1000)]

# join()メソッド(推奨)
start = time.time()
result1 = "".join(strings)
time1 = time.time() - start

# +演算子(非効率)
start = time.time()
result2 = ""
for s in strings:
    result2 += s
time2 = time.time() - start

print(f"join(): {time1:.4f}秒")
print(f"+演算子: {time2:.4f}秒")

使い分けの指針

# 2-3個の文字列連結: +演算子でOK
simple = "Hello" + " " + "World"

# 動的な値の埋め込み: f-string推奨
name = "田中"
age = 25
dynamic = f"{name}さんは{age}歳"

# 多数の文字列連結: join推奨
many_strings = ["a", "b", "c", "d", "e"]
joined = "".join(many_strings)

# リストから条件付き連結
numbers = [1, 2, 3, 4, 5]
even_str = ", ".join(str(n) for n in numbers if n % 2 == 0)
print(even_str)  # 2, 4

実用的な活用例

CSVデータの生成

def create_csv_line(data):
    return ",".join(str(item) for item in data)

# 使用例
row_data = ["田中", 25, "東京", "エンジニア"]
csv_line = create_csv_line(row_data)
print(csv_line)  # 田中,25,東京,エンジニア

HTMLタグの生成

def create_html_list(items):
    list_items = [f"<li>{item}</li>" for item in items]
    return f"<ul>{''.join(list_items)}</ul>"

# 使用例
fruits = ["りんご", "バナナ", "オレンジ"]
html = create_html_list(fruits)
print(html)

まとめ

Python文字列連結には複数の方法があり、用途に応じて使い分けることが重要です。少数の文字列なら+演算子、動的な値の埋め込みにはf-string、多数の文字列連結にはjoin()メソッドを使用することで、効率的で読みやすいコードが書けます。

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座