Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
生徒
「Pythonで文章を単語ごとに分けたり、逆にくっつけたりってできますか?」
先生
「はい、それにはsplit()とjoin()という2つのメソッドを使います。文字列とリストの変換にとても便利ですよ。」
生徒
「splitとjoinって名前が英語で覚えにくそう…」
先生
「splitは『分ける』、joinは『くっつける』という意味です。意味をイメージできれば、使い方も自然に覚えられますよ。」
1. split()とは?文字列を区切ってリストに変換する方法
split()メソッドは、ひと続きの文字列を「区切り文字」を目印にして小さなかたまりへ分け、扱いやすいリストに並べ替えるための道具です。区切り文字にはカンマやハイフンなど任意の記号を指定できます。分けたい記号をはっきり指示するだけで、まとまった文章やデータを用途ごとの部品に整理できます。
# カンマで区切って分割する基本例
fruits = "りんご,みかん,バナナ"
parts = fruits.split(",")
print(parts)
['りんご', 'みかん', 'バナナ']
このように、文字列を分けると要素ごとに取り出したり並べ替えたりしやすくなります。区切り文字は用途に合わせて自由に選べます。
# ハイフン(-)を目印に分割する例
code = "A-12-XYZ"
print(code.split("-"))
['A', '12', 'XYZ']
注意点として、区切りの前後に空白が混じっていると空白もそのまま残ります。見た目をそろえたいときは、分割したあとで前後の空白を取り除くときれいに扱えます。
# 空白つきデータを分割し、前後の空白を取り除く例
raw = "りんご, みかん, バナナ"
items = [s.strip() for s in raw.split(",")]
print(items)
['りんご', 'みかん', 'バナナ']
まずは「分けたい記号を決める → split(その記号)で分ける」という流れに慣れれば、表形式の文字列や設定値の一覧などもすっきり整理できます。
2. 区切り文字を指定しないとどうなる?
split()で区切り文字を省略すると、「空白文字」をまとめて区切りとして扱います。ここでいう空白文字には、半角スペースだけでなくタブ(\t)などの空白類が含まれ、連続していても1つの区切りとして解釈されます。先頭や末尾に余分な空白があっても自動的に無視されるため、入力のゆらぎに強いのが特徴です。
# 何も指定しないと、空白(スペースやタブ)をまとめて区切りにする
sentence = "Python は とても\t楽しい "
print(sentence.split()) # 連続した空白は1つとして扱われ、前後の空白も無視される
['Python', 'は', 'とても', '楽しい']
空白が不規則でも、単語だけをきれいに取り出したい場合に便利です。反対に、スペース自体の数を区別したい場面では、次の章のように区切り文字を明示して使い分けると意図通りに処理できます。
# 必要な数だけ区切りたいときは「最大分割数」を指定できる(空白区切りのまま)
text = "りんご みかん バナナ メロン"
print(text.split(None, 2)) # 左から2回だけ分割して3要素にする
['りんご', 'みかん', 'バナナ メロン']
このように、区切り文字を省略したsplit()は「空白で区切る+余分な空白をまとめて処理する」挙動になることを覚えておくと、文章や入力欄の値を扱うときに役立ちます。
3. split()を使った応用例:改行で分ける
文章を改行ごとに分けたいときは、\n(改行文字)を指定します。
text = "1行目\n2行目\n3行目"
print(text.split("\n"))
['1行目', '2行目', '3行目']
これにより、複数行のテキストも簡単に行ごとにリストにできます。
4. join()とは?リストの要素をまとめて文字列に変換する
join()メソッドは、リストの中の要素を1つの文字列にまとめるときに使います。使い方は、"区切り文字".join(リスト)という形です。
words = ["Python", "は", "楽しい"]
sentence = " ".join(words)
print(sentence)
Python は 楽しい
このように、リストの中の言葉をスペースでつなげて、1つの文章にできます。
5. join()の使い方いろいろ
区切り文字はスペースだけでなく、カンマや改行など自由に選べます。
words = ["りんご", "みかん", "バナナ"]
print(",".join(words)) # カンマで結合
print("・".join(words)) # 記号で結合
りんご,みかん,バナナ
りんご・みかん・バナナ
用途に応じて、好きな区切りで文章を作ることができます。
6. split()とjoin()をセットで使う
split()で文字列をリストにし、join()で再び文字列に戻す、という使い方もよくあります。
text = "おはよう こんにちは こんばんは"
words = text.split() # 分割
print(words)
new_text = "、".join(words) # 結合
print(new_text)
['おはよう', 'こんにちは', 'こんばんは']
おはよう、こんにちは、こんばんは
このように、split()とjoin()を組み合わせると、文字列を自由に加工できます。
7. split()で最大分割数を指定する方法
split()には、何回まで分けるかという回数も指定できます。
text = "りんご,みかん,バナナ,メロン"
print(text.split(",", 2))
['りんご', 'みかん', 'バナナ,メロン']
このように、最大で2回だけ区切られて、3つの要素になります。
8. join()の注意点:リストの要素は文字列にする
join()を使うときは、リストの中がすべて文字列でないとエラーになります。
numbers = [1, 2, 3]
# print("-".join(numbers)) これはエラー
数字などを含む場合はstr()で文字列に変換してから使いましょう。
numbers = [1, 2, 3]
strings = [str(n) for n in numbers]
print("-".join(strings))
1-2-3
9. 練習問題:split()とjoin()を使って加工してみよう
次の文字列を分割して、スラッシュ「/」で結合してみましょう。
date = "2025-06-15"
parts = date.split("-")
print("/".join(parts))
2025/06/15
このように、日付のフォーマットを変えるときなどにも便利です。
まとめ
この記事では、Pythonの文字列処理における基礎であるsplitとjoinの考え方と具体的な手順を通して、文字列からリストへ、そしてリストから文字列へと自在に変換する道筋をていねいにたどった。まず、区切り文字の発想で文章を小さな意味のかたまりに分ける流れを身につけ、単語や項目の粒度をそろえることで処理の見通しがよくなることを確認した。さらに、空白を省略した分割の挙動や改行の扱いを押さえ、入力のゆらぎが混じる現実的なデータでも過不足なく分割できるように練習した。続いて、joinで好きな区切りをはさみながら整然とつなぐ発想を学び、見やすい表示や扱いやすい出力に仕立て直す考え方を体験した。これらは短いメモから長い文章、名簿や一覧、設定値やログの整形まで広く応用でき、学び直しのたびに手触りがよくなる基本技術である。
重要なのは、分けるまえに「どこで区切りたいか」をことばにし、つなぐまえに「どのように見せたいか」を思い描く習慣である。たとえば、日本語の文章なら読点や中黒、英数字の並びならカンマやスラッシュ、表示を強調したいなら記号や改行といった具合に、目的に合わせて区切りを選ぶだけで結果の読みやすさは大きく変わる。空白の連続や余分なスペースは分割後に丁寧に取り除き、空要素を除外してから結合するだけで仕上がりがぐっと整う。最大分割数の指定を使えば、最初の一部だけを取り出して残りを丸ごと扱うといった現場の需要にもすっきり応えられる。数字やNoneが混じるときは必ず文字列へそろえてから結合するという心がけも、後々の不具合を未然に防ぐ勘どころだ。
実務の現場では、フォーム入力やCSVの行、ログの一節、設定の一行など、多様な文字列が頻繁に登場する。そこで活躍するのが、splitでの柔軟な分割とjoinでの意図的な整形である。たとえば、名前の一覧をきれいに並べ直す場面、商品名を記号で連結して見出しを作る場面、改行で段落に分けて読みやすくする場面、時刻や日付の並びを別の表記にそっと替える場面など、どれも同じ型で解ける。手順はいつも変わらない。分けて、整えて、つなぐ。この三拍子が揃えば、Pythonの文字列処理は安心して使い回せる日常の道具になる。
さらに、学びを深めるためには「小さく試す姿勢」が役に立つ。短い文字列で分割と結合の結果を確かめ、想定外の空白や空行が紛れ込んだときの動きを観察する。想定どおりに動くことを確認したうえで、少しずつ長い文字列や複数行のテキストへ広げていけば、途中でつまずいても原因を絞り込みやすい。教科書的な説明にとどまらず、自分の手元のメモや身の回りの文言で繰り返し練習すれば、分割と結合の選択が自然と身体に馴染み、作業の迷いが減っていく。
サンプルプログラム:よく使う整形の型をひとまとめ
次の短い例は、日付の体裁を切り替える型、一覧の見た目を整える型、行番号を付けて読みやすくする型を一か所に集めたもの。自分の用途に合わせて区切りと並びを入れ替えれば、そのまま日常の下ごしらえに使える。
# 日付の表記を切り替える
d = "2025-06-15"
y, m, day = d.split("-")
print("/".join([y, m, day])) # 2025/06/15
print("".join([y, "年", m, "月", day, "日"])) # 2025年06月15日
# 商品名の一覧を読みやすく整える
names = "りんご, みかん, バナナ"
items = [s.strip() for s in names.split(",") if s.strip()]
print("・".join(items)) # りんご・みかん・バナナ
# 複数行に行番号を付ける
text = "一行目\n二行目\n三行目"
rows = text.split("\n")
with_index = [f"{i+1}:{row}" for i, row in enumerate(rows)]
print("\n".join(with_index))
2025/06/15
2025年06月15日
りんご・みかん・バナナ
1:一行目
2:二行目
3:三行目
活用の勘どころチェックリスト
- 分ける前に区切りの候補を三つ挙げる。
- 結合前に見せ方の候補を三つ挙げる。
- 空白のそろえと空要素の除外を常に入れる。
- 最初に小さく試す。
- 型をひとつずつ道具箱に足していく。
生徒
「きょうは、分けてから整えてつなぐ流れがすっと腹に落ちました。区切りを先に決めるだけで、文字列の表情がこんなに変わるのですね。」
先生
「その通り。splitは分ける基準を明確にし、joinは完成形の姿を先に描くのが上手な使い方だよ。目的がはっきりすれば、選ぶ区切りも自然と決まる。」
生徒
「最大分割数の指定がとても便利でした。最初だけ取り出して残りはそのままにできるので、設定の解析が楽になりそうです。」
先生
「うん、必要最小限で止める発想は実務で重宝する。結合の前には型をそろえることも忘れずにね。数字やNoneが混じるときは迷わず文字列にそろえる。」
生徒
「空白を整えてから結合する型も覚えました。細かな手当てを挟むだけで、仕上がりの見やすさが一段上がります。」
先生
「最後にもう一度。分ける、整える、つなぐ。この順番をいつも意識しよう。小さく確かめながら型を増やせば、文字列処理は味方になってくれる。」