joinとは?
joinとは、リストやタプルなどに含まれる複数の文字列要素をまとめて、ひとつの文字列に結合するPythonの組み込みメソッドです。
日常生活で例えると、バラバラになったカードを紐で結んで一本の線にするイメージです。
使い方の特徴として「連結部分に挟む区切り文字」側から呼び出します。
例えばカンマとスペースを区切り文字にする場合は「", ".join(リスト)」という形で記述します。
書き方に少し違和感を覚えるかもしれませんが、慣れると短くすっきり書けます。
forループで文字列をひとつずつ足していく方法に比べて処理が速く、コードも読みやすくなります。
注意点として、結合する要素はすべて文字列型にする必要があります。
数値などのデータが含まれる場合は、str関数で事前に文字列へ変換しておきましょう。
joinの特徴
- 指定した区切り文字を挟みながら複数の文字列を効率よくひとつに連結できる
- 文字列以外の型が含まれるとエラーになるため事前にstr関数で変換が必要になる
- forループで連結するよりも実行速度が速くコードの可読性も向上する
データ整理やテキスト出力など、プログラミングのさまざまな場面で活用できる便利な機能です。
【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング
基本構文
joinメソッドの基本的な書き方は以下のとおりです。
イテラブルとは、要素を順番に取り出せるオブジェクトのことです。リストやタプル、集合(set)、文字列などが該当します。joinの引数に指定できるのは、要素がすべて文字列であるイテラブルに限られます。
以下に基本的な使い方を示すコード例を3つ紹介します。
例1:カンマ区切りで結合する
出力結果
イヌ, ネコ, ウサギこの例では、リストに含まれる複数の動物名をカンマとスペースで連結した結果を出力しています。まず、animalsというリストを定義し、", "を区切り文字に指定してjoinメソッドを実行します。各要素の間に指定した区切り文字が挟み込まれ、ひとつの整った文字列へと整形されます。
例2:区切り文字なしで結合する
出力結果
Pythonこの例では、1文字ずつ分かれたアルファベットのリストを隙間なく連結した結果を出力しています。まず、文字列のリストを用意し、空文字""を区切り文字としてjoinメソッドを呼び出します。要素同士の間隔を空けずに直接結合するため、バラバラの文字を1つの単語へまとめる処理を行っています。
例3:改行区切りで結合する
出力結果
1行目
2行目
3行目この例では、リストの各要素を改行しながら出力した結果を表示しています。まず、各行のテキストを格納したリストを作成し、改行コードである"\n"を区切り文字に指定して結合します。一連のデータを順に改行させながら配置することで、複数行からなる文章を簡単に組み立てています。
実用例
ここではjoinを実際のコードに活用する例を紹介します。それぞれの状況に応じたコードを記述しているため、実際の開発でも応用しやすい内容です。
動物名リストを区切り文字で結合する
複数の動物名が格納されたリストを、読みやすい形式の文字列に変換する例です。リストの内容を画面に表示したり、ログに記録したりする場面で役立ちます。
出力結果
ライオン / ゾウ / キリン / チーターこの例では、リスト内の要素をスラッシュ記号で挟みながらひとつの文字列へ整形した結果を出力しています。まず、4種類の動物名をまとめた配列を準備し、前後スペース付きの" / "を区切り文字に設定します。各要素が分かりやすく区切られ、データの数が増減しても安定して処理が実行されます。
空白区切りで文を組み立てる
単語をリストで管理しておき、joinで文章として組み立てる例です。単語単位でデータを扱う場面に向いています。
出力結果
ペンギンは 南極に 生息する 鳥ですこの例では、分散した単語リストを半角スペースで繋いで1つの文を作成した結果を表示しています。まず、文節ごとに分けた文字列を定義し、" "を区切り文字に採用します。要素ごとに独立した状態を保てるため、語順の入れ替えや単語の置換といった操作もスムーズに行えます。
ファイルパスを動的に生成する
フォルダ名やファイル名をリストで管理し、joinでパス文字列を組み立てる例です。OSによってパスの区切り文字が異なる場合でも、区切り文字の部分を変えるだけで対応できます。
出力結果
data/animals/birds/penguin.txtこの例では、階層構造の名称をスラッシュで連結してファイルまでの経路を示した結果を出力しています。まず、フォルダやファイル名の文字列を順に並べた配列を作成し、区切り文字"/"を用いて結合します。階層構造の構成要素を個別に保持することで、特定のディレクトリ名の変更にも柔軟に対応可能です。
CSVライクな出力を作成する
データをカンマ区切りの文字列として整形する例です。手軽なデータ出力の際に活用できます。
出力結果
名前,種類,生息地
クマ,哺乳類,森林この例では、項目名とデータをそれぞれカンマで結合して表形式のように並べた結果を出力しています。まず、ヘッダー情報とデータ本体を個別のリストとして準備し、","を用いて文字列化します。整列された行を順番に出力することで、カンマ区切りフォーマットのテキストを生成しています。
条件に一致した要素だけを結合する
リスト内包表記と組み合わせることで、条件を満たす要素だけを抽出してから結合する例です。
出力結果
イヌ・ネコ・トリ・カメこの例では、文字数の条件で絞り込んだ要素だけを中点記号で繋ぎ合わせた結果を出力しています。まず、元のリストから2文字以下の名称のみを内包表記で抽出し、新しいリストを作成します。選択された要素に対して"・"を適用して結合することで、特定条件に絞った文字列を形成します。
辞書のキーを結合する
辞書のキー一覧を取り出して、ひとつの文字列にまとめる例です。設定項目や列名を一覧表示したいときなどに使えます。
出力結果
name, type, habitatこの例では、辞書データに登録されている項目名のみを集めて1行に連結した結果を出力しています。まず、複数のキーと値を持つ辞書オブジェクトを作成し、keysメソッドでキーの一覧を取得します。それらを", "でつなぎ合わせることで、項目名の一覧をわかりやすく抽出しています。
改行区切りで複数行テキストを生成する
メッセージや通知文など、複数の行からなるテキストを組み立てる例です。テンプレート的な文章を動的に生成したいときに役立ちます。
出力結果
【動物情報】
名前:シロクマ
分類:哺乳類
生息地:北極圏この例では、箇条書きのような複数行のテキストを1つの変数として整形した結果を表示しています。まず、表示したい各行の文章をリスト形式で用意し、改行文字"\n"を指定して連結します。一行ごとの要素が垂直に整列され、見やすい文面を構築できます。
まとめ
joinは、Pythonで文字列を結合するための基本的かつ実用的なメソッドです。区切り文字を自由に指定できる柔軟さと、リスト内包表記などの書き方との親和性の高さから、多様な場面で活用されます。
Python joinが活躍する場面
- リストをカンマやスラッシュなどの区切り文字で文字列化するとき
- 条件で絞り込んだ要素を抽出してひとつの文字列にまとめるとき
- 複数行の文章や構造化されたメッセージを動的に作成するとき
joinを用いる上で、押さえておきたいポイントを覚えておきましょう。
重要なポイント
- 結合する要素はすべて文字列型で揃える必要がある
- 数値などが混在する場合はstr関数で事前に変換する
- 空文字や改行文字など目的にあわせて区切り文字を選択する
- forループによる連結より処理が高速で読みやすくなる
初めてPythonを学ぶ方も、紹介したコード例を参考に実際に動かして試してみてください。
基本の書き方を習得して、洗練されたプログラムを作成していきましょう。