YutaKaのPython教室

Python の文法やライブラリ、API、環境構築について画像・動画・ソースコード付きで徹底解説!

Python 文字列の結合方法まとめ|図解付で分かりやすく解説

文字列の結合は、文字列の解析やデータ処理などで頻繁に行われる作業の一つですね。

Pythonには、文字列を簡単に結合するための機能が豊富に用意されています。

しかし、実際に文字列を結合しようとすると、次のような課題に直面することも…。

  • 複数の文字列を簡単に結合する方法は?
  • リスト化された文字列を一括で結合する方法はある?
  • テキストに文字列を埋め込みたい!

この記事では、Pythonの文字列結合について図解付きでわかりやすく解説していきます。

文字列結合方法まとめ

Pythonにおける文字列の結合には主に次のような種類があります。

  1. シンプルに複数の文字列を連結する
  2. [リスト]内の文字列を結合する
  3. 既存テキスト内に文字列を埋め込む

これらの結合方法を以下の表にまとめているので、一覧を確認してみましょう。

分類 結合方法 実行例, 適用
"文字列"の連結 連結
"文字列1"+"文字列2"
"あいう"+"えお""あいうえお"
  連結→代入
"変数1" += "変数2"
s1="かきく", s2="けこ"
s1+=s2s1="かきくけこ"
  繰り返し
"文字列" * 繰り返し回数

"あい"*3"あいあいあい"
[文字列リスト]の結合 "結合文字".join([リスト]) l=["さ", "し", "す", "せ", "そ"]
"_".join(l)"さ_し_す_せ_そ"
テキストに埋め込み f-stringで埋め込み
※Python3.6以降
name="田中", f"{name}さん"
"田中さん"
  .format()で埋め込み
※Python2.6以降
name="田中", "{}さん".format(name)
"田中さん"
  %演算子で埋め込み
※Python3.0以降は非推奨
name="田中", "%sさん" % name
"田中さん"

文字列の結合は、テキスト処理の基本操作の一つです。

例を挙げればキリがありませんが、例えば次のような処理でも使用します。

  • テキスト処理
  • ファイルパスの結合
  • ウェブスクレイピング結果の整理
  • 各種クエリの結合など

以下では、各文字列の結合方法について、サンプルコード付きで詳しく解説していきます。

しっかり結合方法を覚えて、適切に処理できるようになりましょう!

+で文字列を連結

最も基本的な文字列の結合方法は、2つ以上の文字列を+で繋ぐ方法です。

  • "文字列1"+"文字列2"

結合するのは、文字列のシリアル、文字列の変数どちらでもOKです。

# 文字列のシリアル値を結合
"あいう" + "えお"
# 'あいうえお'

# 文字列の変数を結合
s1 = "かき"
s2 = "く"
s3 = "けこ"
s1 + s2 + s3
# 'かきくけこ'

文字列の連結は非常にシンプルで簡単ですね。

この他の処理方法についても、しっかりおさえて行きましょう。

文字列に数値を連結

+で連結できるのは、文字列同士のみです。

文字列と数値を+で結合しようとすると、次のようなエラーが発生します。

name = "田中"
age = 20

name + "さんは、"+ age +"歳です。"
# TypeError: can only concatenate str (not "int") to str

文字列と数値を連結したい場合には、str()で数値を文字列に変換します。

  • "文字列" + str(数値)

サンプルコードで挙動を確認してみます。

name = "田中"
age = 20

name + "さんは、"+ str(age) +"歳です。"
# '田中さんは、20歳です。'

問題なく、文字列と数値を結合することができましたね。

ここでは、+で結合する方法を紹介しましたが、文字列と数値を結合する際は、後述するf-stringで埋め込みも便利です。

+=で文字列を連結(代入)

+で結合する際の、ちょっとしたテクニックとして、+=での結合があります。

左側の変数に右側の変数を結合して、左側の変数に代入することができます。

  • s1 += s2
    • s1s1+s2の値を代入

サンプルコードで実行例を確認してみましょう。

s1 = "あいう"
s2 = "えお"

s1+=s2
s1
"あいうえお"

文字列の繰り返し

同じ文字列を複数回繰り返す場合は、対象文字列に繰り返し回数をかけます。

  • "文字列" * 繰り返し回数
"あい" * 3
# 'あいあいあい'

s = "すももも"
s * 3 
# 'すもももすもももすももも'

テキスト処理の際には、文字列を繰り返すこともあるので、覚えておきたい内容ですね。

[文字列リスト]の結合|.join()

.join()メソッドを使用すると、[文字列のリスト]の要素を指定の文字列で結合できます。

  • "結合文字".join([文字列のリスト])

.join()を実行すると[文字列のリスト]結合文字で結合した文字列が返されます。

サンプルコードで挙動を確認してみましょう。

s = ["さ", "し", "す", "せ", "そ"]

# "_"で結合
"_".join(s)
'さ_し_す_せ_そ'

# " "で結合
" ".join(s)
'さ し す せ そ'

# "-"で結合
"-".join(s)
'さ-し-す-せ-そ'

.join()メソッドでは、[リスト]だけでなく、(タプル){セット}などのシーケンスに適用できます。

# 文字列のタプルの結合例
s = ("さ", "し", "す", "せ", "そ")
"-".join(s)
'さ-し-す-せ-そ'

# 文字列のセットの結合例
s = {"さ", "し", "す", "さ", "し"}
# {'さ', 'し', 'す'}

"-".join(s)
# 'し-す-さ'

  • 【参考】逆の操作である文字列の分割については、以下の記事で解説しています。
≫Python 文字列の分割方法まとめ|図解付で分かりやすく解説
文字列の分割は、文字列の解析やデータ処理などで頻繁に行われる作業の一つですね。Pythonには、文字列を簡単に分割するための機能が豊富に用意されています。しかし、実際に文字列の分割を行おうとすると、次のような課題に直面することも…。① 特定の文字でテキストを分割する方法は?② テキストを行ごとに分割する方法は?③ 正規表現を使って複雑な分割処理を行いたい! この記事では、Pythonの文字列分割について図解付きでわかりやすく解説していきます。
www.yutaka-note.com/entry/bf_split
 

数値のリストを結合

.join()は、[文字列のリスト等]を結合するメソッドです。

[数値のリスト]は、そのままでは結合できません。

date = [1998, 10, 31]

"-".join(date)
# TypeError: sequence item 0: expected str instance, int found

[数値のリスト]は、リスト内包表記で数値を文字列に変換してから、.join()を適用しましょう。

date = [1998, 10, 31]
date_str = [str(n) for n in date] # リスト内包表記で文字列に変換

"-".join(date_str)
# '1998-10-31'

# 一行で書く場合
date_str = [str(n) for n in date]
"-".join([str(n) for n in date])
# '1998-10-31'
  • 【参考】文字列の日付をpandasDatetimeに変換する方法は以下の記事で紹介しています。
≫pandas 文字列⇒Datetime変換|時系列操作を簡単マスター!
pandasで"文字列"をDatetimeに変換する方法、Datetimeの基本的な操作方法を解説します。"文字列"のままでは、日時関連の計算や条件判定が自由にできません…。Datetimeに変換して、日付の差分計算や便利な機能を使えるようにしましょう!
www.yutaka-note.com/entry/pandas_datetime
 

テキストに文字列を埋め込み

文字列の結合の特別なパターンとして、テキストに文字列を埋め込む方法を紹介します。

  • 例)"私は___です。"という雛形に、name="田中"を埋め込んで、"私は田中です。"というテキストを作成

Pythonでテキストに文字列を埋め込む方法は以下の通りです。

構文・メソッド 使用方法
f-string 文字列の前にfをつけて、文字列の中に{変数 or 式}を記述
※Python3.6以降で使用可能
.format() 文字列中で{}を用意し、.format()で変数や式を与える
※Python2.6以降で使用可能
%演算子 文字列中でフォーマット指定子を用意し、%演算子の右側に変数を与える
※Python3.0以降で非推奨

バージョンの制限がない限りは、基本的にはf-stringを使用することをおすすめします。

変数や式を直接記述できるうえに、可読性も高く、最も使いやすいです。

f-stringで埋め込み

f-stringは、Python3.6から導入された文字列フォーマットで、文字列中に変数や式の値を埋め込むことができます。

文字列の前にfをつけて、文字列の中に{変数 or 式}を記述します。

  • f"文字列の中に{リテラル, 変数, or式}を記述"

サンプルコードで使用方法を確認してみましょう。

name = "田中"
age = 20

f"{name}さんは、{age}歳です。"
# '田中さんは、20歳です。'

f-stringの中で式を使うことも可能です。

f"{name}さんは、{age*3+5}歳です。"
# '田中さんは、65歳です。'

.format()で埋め込み

".format()"は、文字列をフォーマットするためのメソッドです。

文字列の中にプレースフォルダー{}を用意して、.format()メソッドで値を代入します。

  • "文字列の中に{}を記述".format(リテラル, 変数, or式)

サンプルコードで使用方法を確認してみましょう。

name = "田中"
age = 20

"{}さんは、{}歳です。".format(name, age)
# '田中さんは、20歳です。'

%演算子で埋め込み

%演算子は、C言語のprintf()関数のフォーマット指定子に似た方法です。

文字列の中に、変数の型に応じたフォーマット指定子を準備して、%( )で値を代入します。

主なフォーマット指定子は次の通りです。

フォーマット指定子 説明
%s 文字列
%d 整数
%f 浮動小数点
%e 指数表記の浮動小数点

サンプルコードで使用方法を確認してみましょう。

name = "田中"
age = 20

"%sさんは、%d歳です。" %(name, age)
# '田中さんは、20歳です。'

ただし、Python3.0以降で非推奨です。

f-stringformat()というより便利な手法もあるので、よっぽどの事情がない場合は使うことはないと思います。

オススメ|データ分析の勉強方法

今回はPythonでテキストファイルを分割する方法ついて解説しました。

データ分析初心者の方にはこちらの記事もおススメです。

≫独学でデータ分析を勉強するオススメ学習本
独学でのpythonデータ分析勉強に役立ったおススメ書籍を紹介していきます。業務でそれなりにデータ分析を行えるまで、いろいろな試行錯誤をしてきましたが、もし自分が今ゼロから勉強する立場ならどうするのがいいのか考えてみました。以下では、入門書、個別モジュール用、実践用の3つの視点でおススメ本を紹介していきます。
www.yutaka-note.com/entry/data_analysis
 

Pythonで作業の効率化を目指している方には、次の記事がおススメです。

≫【レビュー】退屈なことはPythonにやらせよう | 単純作業は自動化
名著「退屈なことはPythonにやらせよう 」をレビュー!単純作業を自動化して、自分が本当にしたいことのために時間を確保していこう!所要時間やできるようになったことを紹介!この本を参考にして作成した、自作自動化スクリプトも紹介しています!
www.yutaka-note.com/entry/python_jido
 
≫【レビュー】Python自動処理 全部入り。 | 即効性重視!Pythonによる自動化事例集!
今回は、Pythonの作業自動処理の解説本『Python自動処理全部入り』をレビュー!この本は、特定の作業に特化した即効性の重視の自動化解説本です。よくある作業から自動化しやすい作業を抽出して、それらの自動化を集中的に解説した本という印象です。本の中に自分のニーズに合った自動化処理が見つかれば、その日からすぐ使える事例集のような印象です。
www.yutaka-note.com/entry/python_jido_zenbu