Pythonで文字列を結合する方法|+演算子・join()・f文字列の使い分け

Pythonでは、複数の文字列を一つにつなげる処理を「文字列の結合」と呼びます。

例えば、姓と名をつなげて氏名を作ったり、リストに入っている単語をカンマ区切りの文章にしたりする場合です。

Pythonで文字列を結合する主な方法は、次の3つです。

  • 少数の文字列を直接つなげる:「+演算子」
  • 変数を文章に組み込む:「f文字列」
  • リスト内の文字列をまとめてつなげる:「join()」

どの方法でも文字列を結合できますが、扱うデータの形によって適した方法が異なります。この記事では、それぞれの使い方と選び方を初心者向けに解説します。

この記事の内容

+演算子で文字列を結合する

最も分かりやすいのは、「+演算子」を使う方法です。

数値を足し算するときと同じように、文字列同士を「+」でつなげます。

# 2つの文字列を用意
first_name = "太郎"
last_name = "山田"

# 姓と名を結合
full_name = last_name + first_name

print(full_name)  # 山田太郎

文字列の間に空白を入れたい場合は、空白の文字列も加えます。

first_name = "Taro"
last_name = "Yamada"

# 姓と名の間に半角スペースを入れる
full_name = first_name + " " + last_name

print(full_name)  # Taro Yamada

「+演算子」は、結合する文字列が2~3個程度なら直感的で分かりやすい方法です。

文字列と数値はそのまま結合できない

文字列と数値を「+」で直接つなげると、エラーになります。

name = "りんご"
price = 150

# 文字列と整数はそのまま結合できない
message = name + "の価格は" + price + "円です"

「price」は整数であり、文字列ではありません。結合するには、「str()」を使って数値を文字列へ変換します。

name = "りんご"
price = 150

# 数値を文字列に変換してから結合
message = name + "の価格は" + str(price) + "円です"

print(message)  # りんごの価格は150円です

「+演算子で結合できるのは、基本的に文字列同士」と覚えておきましょう。

f文字列で変数を文章に組み込む

変数を文章の中に入れたい場合は、「f文字列」を使うと読みやすくなります。

文字列の先頭に「f」を付け、組み込みたい変数を波括弧で囲みます。

name = "りんご"
price = 150

# 変数を文章の中に組み込む
message = f"{name}の価格は{price}円です"

print(message)  # りんごの価格は150円です

f文字列では、整数を「str()」で変換しなくても文章に組み込めます。

複数の変数を使う場合は、「+演算子」よりも文章の完成形を確認しやすい点が特徴です。

item = "ノート"
price = 200
count = 3

# 商品情報を一つの文章にする
message = f"{item}を{count}冊購入すると、合計は{price * count}円です"

print(message)

実行結果は次のとおりです。

ノートを3冊購入すると、合計は600円です

波括弧の中には、変数だけでなく簡単な計算も書けます。

ただし、複雑な処理まで詰め込むと読みにくくなります。長い計算は先に変数へ保存し、f文字列には完成した値を入れるとよいでしょう。

join()でリスト内の文字列を結合する

複数の文字列がリストに入っている場合は、「join()」が便利です。

# 果物の名前を入れたリスト
fruits = ["りんご", "みかん", "バナナ"]

# カンマでリストの要素を結合
text = ",".join(fruits)

print(text)  # りんご,みかん,バナナ

「join()」では、要素の間に入れる文字を先に書きます。

基本的な形は次のとおりです。

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

最初は書く順番が逆に見えるかもしれません。

「指定した区切り文字を使って、リストの要素をつなぐ」と考えると理解しやすくなります。

区切り文字を変えて結合する

「join()」の区切り文字は、カンマ以外にも変更できます。

fruits = ["りんご", "みかん", "バナナ"]

# 読点で結合
text = "、".join(fruits)

print(text)  # りんご、みかん、バナナ

空文字を指定すると、要素の間に何も入れずに結合できます。

characters = ["P", "y", "t", "h", "o", "n"]

# 区切り文字なしで結合
word = "".join(characters)

print(word)  # Python

改行文字を使えば、リストの要素を1行ずつ並べられます。

tasks = ["メールを確認する", "資料を作る", "予定を登録する"]

# 各要素を改行で結合
task_text = "\n".join(tasks)

print(task_text)

実行結果は次のとおりです。

メールを確認する
資料を作る
予定を登録する

「join()は文字列を横につなげる機能」と考えがちですが、区切り文字に改行を指定すれば、縦に並べることもできます。

数値を含むリストをjoin()で結合する

「join()」で直接結合できるのは、文字列の要素だけです。

数値が入っているリストをそのまま渡すとエラーになります。

numbers = [10, 20, 30]

# 整数のリストはそのまま結合できない
text = ",".join(numbers)

数値を結合する場合は、それぞれの要素を「str()」で文字列に変換します。

numbers = [10, 20, 30]

# 各数値を文字列に変換してから結合
text = ",".join(map(str, numbers))

print(text)  # 10,20,30

このコードは、次の順番で処理されています。

  1. 「map(str, numbers)」で各数値を文字列にする
  2. 「join()」で変換後の文字列をカンマでつなぐ

処理を分けて書くと、流れを確認しやすくなります。

numbers = [10, 20, 30]

# 各数値を文字列に変換
string_numbers = list(map(str, numbers))

# 変換した文字列を結合
text = ",".join(string_numbers)

print(string_numbers)  # ['10', '20', '30']
print(text)  # 10,20,30

初心者のうちは、短く書くことよりも「どの順番で処理されているか」が分かる書き方を選んでも問題ありません。

+=で文字列を後ろに追加する

「+=」を使うと、変数に入っている文字列の後ろへ新しい文字列を追加できます。

message = "今日の予定:"

# 元の文字列の後ろに追加
message += "買い物"
message += "、読書"

print(message)  # 今日の予定:買い物、読書

繰り返し処理と組み合わせることもできます。

words = ["Python", "を", "学習中"]
text = ""

# 各要素を順番に追加
for word in words:
    text += word

print(text)  # Pythonを学習中

ただし、リストにある大量の文字列をまとめて結合する場合は、「+=」を繰り返すよりも「join()」を使うほうが目的を読み取りやすくなります。

words = ["Python", "を", "学習中"]

# リストの要素をまとめて結合
text = "".join(words)

print(text)  # Pythonを学習中

「短いコードなら+=」「まとまったデータならjoin()」というように、データの形から選ぶと迷いにくくなります。

複数行の文字列を結合する

短い文章を複数行に分けて書きながら、一つの文字列として扱うこともできます。

# 括弧内では文字列を複数行に分けて書ける
message = (
    "Pythonでは、"
    "複数行に分けて書いた文字列も"
    "一つにつなげられます。"
)

print(message)

実行結果では、コード上の改行は入りません。

Pythonでは、複数行に分けて書いた文字列も一つにつなげられます。

実際の文章にも改行を入れたい場合は、「\n」を使います。

message = (
    "1行目:文字列の基本\n"
    "2行目:文字列の結合\n"
    "3行目:文字列の分割"
)

print(message)

文章が長くなったときは、無理に一行へ詰め込まず、コード自体の読みやすさも意識しましょう。

文字列を結合する方法の選び方

文字列の結合方法は、「何個つなげるか」よりも「元のデータがどのような形か」で選ぶと分かりやすくなります。

  • 少数の文字列を直接つなげる:「+演算子」
  • 変数を含む文章を作る:「f文字列」
  • リスト内の文字列をまとめる:「join()」
  • 既存の文字列へ少しずつ追加する:「+=」

例えば、商品名と価格を使って文章を作るなら、f文字列が自然です。

item = "ペン"
price = 120

# 変数から読みやすい文章を作る
message = f"{item}の価格は{price}円です"

print(message)

一方、複数の商品名がリストに入っているなら、「join()」が向いています。

items = ["ペン", "ノート", "消しゴム"]

# 商品名を読点でつなげる
item_text = "、".join(items)

print(item_text)  # ペン、ノート、消しゴム

「どの書き方が一番高度か」ではなく、「完成する文字列の形がコードから想像できるか」を基準にすると、読みやすいプログラムになります。

split()との違い

「join()」と反対の働きをするのが「split()」です。

  • リスト内の文字列を一つにつなげる:「join()」
  • 一つの文字列をリストに分ける:「split()」
fruits = ["りんご", "みかん", "バナナ"]

# リストを一つの文字列にする
text = ",".join(fruits)

# 文字列を再びリストに分ける
new_fruits = text.split(",")

print(text)        # りんご,みかん,バナナ
print(new_fruits)  # ['りんご', 'みかん', 'バナナ']

「join()」と「split()」をセットで覚えると、文字列とリストを相互に変換しやすくなります。

まとめ

Pythonで文字列を結合する方法は、主に次の4つです。

  • 「+演算子」で文字列同士を直接つなげる
  • 「f文字列」で変数を文章に組み込む
  • 「join()」でリスト内の文字列をまとめてつなげる
  • 「+=」で既存の文字列へ追加する

文字列が少ない場合は、「+演算子」で簡単に結合できます。

greeting = "こんにちは、" + "モトヤさん"

print(greeting)

変数を含む文章には、「f文字列」が向いています。

name = "モトヤ"

# 変数を文章に組み込む
greeting = f"こんにちは、{name}さん"

print(greeting)

リスト内の文字列をまとめて結合する場合は、「join()」を使います。

words = ["Python", "文字列", "結合"]

# 空白で要素を結合
text = " ".join(words)

print(text)  # Python 文字列 結合

大切なのは、一つの方法だけですべてを処理しようとしないことです。

「文章を作りたいのか」「リストをまとめたいのか」「既存の文字列へ追加したいのか」を考えれば、適切な方法を選びやすくなります。まずは少数の文字列を「+演算子」でつなぎ、次にf文字列や「join()」を試してみましょう。

この記事が役に立ったらシェア
  • URLをコピーしました!
この記事の内容