Python 逆引き集 | 字列操作:文字列を連結する

Python Python
スポンサーリンク
スポンサーリンク

文字列を連結するとはどういうことか

Pythonでプログラムを書いていると、「メッセージを組み立てる」「ログを作る」「ファイルの1行を作る」など、複数の文字列をつなげて1つの文字列にしたい場面が頻繁に出てきます。 これが 文字列の連結 です。

ただし、やり方によっては

  • 読みにくいコードになる
  • パフォーマンスが悪くなる
  • セキュリティ的に危険な文字列を作ってしまう といった問題につながることがあります。

ここでは、初心者向けに「文字列を連結する」方法をステップバイステップで整理しながら、 安全で読みやすい書き方を身につけていきます。

基本の連結:+ 演算子でつなぐ

1. 最もシンプルな連結方法

first = "Hello"
second = "World"

message = first + " " + second
print(message)  # Hello World
Python

+ は「文字列同士をつなぐ」ための基本的な演算子です。 少ない要素をつなぐときには分かりやすく、初心者にも直感的です。

2. 数値を含めるときの注意点

count = 5
text = "件数は " + str(count) + " 件です"
Python

数値をそのまま + で文字列に足そうとするとエラーになります。 必ず str() で文字列に変換してから連結する必要があります。

この点は初心者がよくつまずくので、 「数値を文字列に混ぜるときは str() を通す」 という習慣を持っておくと安心です。

実務で推奨される連結:f文字列で組み立てる

1. f文字列の基本

name = "Taro"
age = 20

message = f"{name}{age} 歳です"
print(message)
Python

f文字列(f-string)は、

  • 文字列の中に {} で変数や式を埋め込める
  • + より読みやすく、バグが少ない という理由から、現在のPythonでは最も推奨される書き方です。

2. 複数の値を自然な文章として連結する

user = "Hanako"
items = 3
total = 1500

text = f"{user} さんは {items} 点、合計 {total} 円を購入しました"
Python

+ を多用すると、

text = user + " さんは " + str(items) + " 点、合計 " + str(total) + " 円を購入しました"
Python

のように読みにくくなりますが、f文字列なら 「文章としてそのまま読めるコード」になります。

3. 深掘り:なぜf文字列が重要なのか

  • 型変換を意識しなくてよい(数値もそのまま埋め込める)
  • 構造が明確(どこに何が入るか一目で分かる)
  • 保守性が高い(後から修正しやすい)

初心者のうちから「文字列を連結して文章を作るときは f文字列」という癖をつけておくと、 後々のコードの品質が大きく変わります。

複数の文字列をまとめて連結する:join() を使う

1. リストの要素を一気につなぐ

words = ["Python", "で", "文字列を", "連結する"]
sentence = " ".join(words)
print(sentence)  # Python で 文字列を 連結する
Python

"区切り文字".join(リスト) という形で使い、

  • スペース区切り
  • カンマ区切り
  • タブ区切り など、さまざまな形式の文字列を効率よく作れます。

2. CSV形式の1行を作る

columns = ["Taro", "20", "Tokyo"]
line = ",".join(columns)
print(line)  # Taro,20,Tokyo
Python

ファイル出力やログ出力など、 「同じ形式でたくさんの行を作る」場面で非常に役立ちます。

3. 深掘り:なぜjoin()が重要なのか

  • 多数の文字列を + でつなぐより高速で効率的
  • 「区切り文字」を一箇所で管理できる
  • リストやタプルなどのデータ構造と相性が良い

特に、ループの中で大量の文字列を連結する場合、 + を繰り返すとパフォーマンスが悪くなりがちです。 join() を使うことで、 「まとめて1回で連結する」 という形になり、処理が軽くなります。

改行やタブを含めて連結する

1. 改行を使った連結

lines = ["1行目", "2行目", "3行目"]
text = "\n".join(lines)
print(text)
Python

\n は「改行」を表す特殊な文字です。 複数行のメッセージやファイル内容を組み立てるときに、 join() と組み合わせると非常に便利です。

2. タブ区切りの文字列

fields = ["id", "name", "age"]
header = "\t".join(fields)
print(header)  # id    name    age
Python

タブ区切りのログやTSVファイルなどを作るときに使います。

連結のときに意識したい「文字列はイミュータブル」という性質

1. 文字列は「変更できない」

Pythonの文字列はイミュータブル(変更不可)です。 つまり、連結するときは「元の文字列を変更している」のではなく、 新しい文字列を作っている というイメージになります。

text = "Hello"
text += " World"  # 新しい文字列が作られて、textがそれを指すようになる
Python

2. 深掘り:なぜこれが重要なのか

  • 連結を繰り返すと、そのたびに新しい文字列が作られる
  • 大量の連結を + で行うと、メモリと時間の無駄が増える

そのため、

  • 少数の連結 → f文字列や + でもOK
  • 大量の連結 → リストに集めてから join()

という使い分けを意識すると、 パフォーマンスと可読性の両方を保てます。

セキュリティと品質の観点から見た「文字列連結の注意点」

1. ユーザー入力をそのまま連結して危険な文字列を作らない

user_input = "Taro"
query = "SELECT * FROM users WHERE name = '" + user_input + "'"
Python

このような書き方は、SQLインジェクションなどの攻撃に弱くなります。 実務では、

  • プレースホルダ
  • パラメータバインディング
  • 専用ライブラリ を使うべきですが、 「文字列連結で危険なコマンドやクエリを組み立てない」 という意識は、初心者のうちから持っておくと良いです。

2. ログやメッセージに機密情報を安易に連結しない

log = f"user={user_id}, password={password}"
Python

このようなログは、

  • パスワードが平文で残る
  • 認証情報が漏洩するリスクが高まる ため、非常に危険です。

文字列を連結してログやメッセージを作るときは、 「誰がどこで見るか」「何が残るか」 を意識して設計する必要があります。

文字列連結のテンプレートと練習用コード

基本的な連結テンプレート(少数の要素)

a = "Hello"
b = "World"
message = a + " " + b
Python

f文字列で文章を作るテンプレート

user = "Taro"
count = 3
total = 1200

text = f"{user} さんは {count} 点、合計 {total} 円を購入しました"
Python

join()でリストを連結するテンプレート

items = ["apple", "banana", "orange"]
line = ", ".join(items)  # "apple, banana, orange"
Python

改行を含む連結テンプレート

lines = ["ログ1", "ログ2", "ログ3"]
log_text = "\n".join(lines)
Python

まとめ

  • 文字列の連結には +、f文字列、join() など複数の方法があります。
  • 少数の連結なら + や f文字列で十分ですが、 文章やメッセージを作るときは f文字列が最も読みやすく安全 です。
  • 多数の文字列を連結するときは、リストに集めてから join() を使うことで、 パフォーマンスと可読性を両立できます。
  • 文字列はイミュータブルであり、連結のたびに新しい文字列が作られることを意識すると、 無駄な処理を避けやすくなります。
  • ユーザー入力や機密情報を連結して危険な文字列を作らないよう、 セキュリティの観点も常に意識することが重要です。

文字列連結は「ただつなぐだけ」の操作に見えますが、 その裏にはパフォーマンス・安全性・可読性といった重要な要素が隠れています。 ここを丁寧に押さえておくと、Pythonでの開発が一段と安定したものになります。

タイトルとURLをコピーしました