Pythonで文字列を分割する方法|split()の使い方を初心者向けに解説

Pythonでは、一つの文字列を複数の部分に分けたいことがあります。

例えば、「りんご,みかん,バナナ」という文字列から、それぞれの果物を取り出したい場合です。

このような処理には、主に「split()メソッド」を使います。

この記事では、文字列をカンマや空白で分割する基本的な方法から、分割回数の指定、空の要素に関する注意点まで、初心者向けに分かりやすく解説します。

この記事の内容

split()で文字列を分割する

文字列を特定の記号で分けるには、「split()」の括弧内に区切り文字を指定します。

# カンマで区切られた文字列
text = "りんご,みかん,バナナ"

# カンマの位置で文字列を分割
fruits = text.split(",")

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

実行結果はリストになります。

分割前は一つの文字列ですが、分割後は「りんご」「みかん」「バナナ」という3つの要素として個別に扱えます。

「split()は文字列を切るだけでなく、扱いやすいリストへ変換する機能」と考えると分かりやすいでしょう。

分割後の要素を取り出す

「split()」で作られたリストは、通常のリストと同じ方法で操作できます。

date_text = "2026/09/12"

# スラッシュで年月日を分割
date_parts = date_text.split("/")

# 分割した要素を個別に取り出す
year = date_parts[0]
month = date_parts[1]
day = date_parts[2]

print(year)   # 2026
print(month)  # 09
print(day)    # 12

リストの位置を表す番号は「0」から始まります。

そのため、最初の要素は「date_parts[0]」、2番目の要素は「date_parts[1]」で取得します。

文字列の分割は、単に見た目を変える処理ではありません。「一つにつながったデータを、個別に利用できる形へ整える処理」でもあります。

空白で文字列を分割する

括弧内に何も指定せず「split()」を使うと、空白を基準に文字列を分割できます。

# 単語の間に空白がある文字列
text = "Python は 初心者 にも 学びやすい"

# 空白ごとに分割
words = text.split()

print(words)

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

['Python', 'は', '初心者', 'にも', '学びやすい']

引数を省略した「split()」は、連続した空白もまとめて区切りとして扱います。

# 単語の間に複数の空白がある
text = "赤   青  緑"

# 連続する空白をまとめて処理
colors = text.split()

print(colors)  # ['赤', '青', '緑']

利用者が入力した文章では、空白の数が一定とは限りません。

単語を空白で分ける場合は、括弧内に半角スペースを指定するより、「split()」と引数を省略するほうが扱いやすいことがあります。

指定した回数だけ分割する

「split()」の第2引数には、分割する最大回数を指定できます。

基本的な書き方は次のとおりです。

文字列.split(区切り文字, 最大分割回数)

実際のコードで確認してみましょう。

# 名前と説明をコロンで区切った文字列
text = "商品名:ノート:表紙が青い商品"

# 左から1回だけ分割
parts = text.split(":", 1)

print(parts)

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

['商品名', 'ノート:表紙が青い商品']

最大分割回数に「1」を指定しているため、最初に見つかったコロンだけで分割されています。

文章の後半にも同じ記号が含まれる可能性がある場合は、「分割しすぎないように回数を制限する」とデータの形を保ちやすくなります。

右側から分割するにはrsplit()を使う

通常の「split()」は左側から分割します。

右側から分割したい場合は、「rsplit()」を使います。

# 複数のピリオドを含むファイル名
file_name = "python.lesson.01.txt"

# 右側から1回だけ分割
name, extension = file_name.rsplit(".", 1)

print(name)       # python.lesson.01
print(extension)  # txt

この方法なら、途中にピリオドが含まれていても、最後の「txt」を分けて取得できます。

ただし、実際のプログラムでファイルの拡張子やパスを扱う場合は、「pathlib」などの専用機能も選択肢になります。

「split()で分割できるから必ず使う」のではなく、処理の目的に合う方法を選ぶことも大切です。

改行ごとに文字列を分割する

複数行の文字列を行ごとに分ける場合は、「splitlines()」が便利です。

# 複数行の文字列
text = """りんご
みかん
バナナ"""

# 改行ごとに分割
fruits = text.splitlines()

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

改行を表す文字は、実行環境によって異なる場合があります。

「splitlines()」を使えば、改行の種類を細かく指定しなくても、行ごとに分割できます。

区切り文字がない場合はどうなるか

指定した区切り文字が見つからなくても、エラーにはなりません。

元の文字列を一つだけ含むリストが返されます。

text = "りんご"

# 元の文字列にカンマは含まれていない
result = text.split(",")

print(result)       # ['りんご']
print(len(result))  # 1

「分割できなかったら空のリストになる」と考えやすい部分ですが、元の文字列は消えません。

区切り文字がある場合もない場合も、戻り値はリストになります。

連続する区切り文字に注意する

区切り文字を指定した場合、その文字が連続すると空文字が要素に含まれます。

# 2番目の値が空になっている
text = "りんご,,バナナ"

# カンマで分割
fruits = text.split(",")

print(fruits)  # ['りんご', '', 'バナナ']

2つのカンマの間には文字がないため、空文字の「”」が作られます。

空文字を取り除きたい場合は、次のように書けます。

text = "りんご,,バナナ"

# 分割後に空文字を除外
fruits = [fruit for fruit in text.split(",") if fruit]

print(fruits)  # ['りんご', 'バナナ']

ただし、空欄にも「値が入力されていない」という意味があります。

例えばCSV形式のデータでは、空欄を削除すると列の位置がずれることがあります。「空の要素は不要」と決めつけず、残すべきデータか確認してから処理しましょう。

分割後の余分な空白を取り除く

カンマの後ろに空白がある文字列を分割すると、その空白も要素の一部として残ります。

text = "東京, 大阪, 名古屋"

# カンマで分割
cities = text.split(",")

print(cities)  # ['東京', ' 大阪', ' 名古屋']

余分な空白を取り除く場合は、「strip()」を組み合わせます。

text = "東京, 大阪, 名古屋"

# 分割後に各要素の前後の空白を削除
cities = [city.strip() for city in text.split(",")]

print(cities)  # ['東京', '大阪', '名古屋']

「strip()」は、文字列の前後にある空白や改行を取り除くメソッドです。

利用者の入力や外部ファイルから読み込んだデータには、余分な空白が混ざることがあります。

実際のプログラムでは、「文字列を分割したら終わり」ではなく、「分割後のデータを使いやすい形に整える」ところまで考えると、想定外の動作を防ぎやすくなります。

split()とjoin()の違い

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

  • 文字列を分けてリストにする:「split()」
  • リスト内の文字列をつなげる:「join()」

両方を使った例を見てみましょう。

text = "赤,青,緑"

# 文字列をリストに分割
colors = text.split(",")

# リストの要素を読点でつなげる
new_text = "、".join(colors)

print(new_text)  # 赤、青、緑

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

まとめ

Pythonで文字列を分割するには、主に「split()メソッド」を使います。

text = "りんご,みかん,バナナ"

# カンマで文字列を分割
fruits = text.split(",")

print(fruits)

今回のポイントは次のとおりです。

  • 指定した記号で分割する:「split(区切り文字)」
  • 空白で分割する:「split()」
  • 分割回数を制限する:「split(区切り文字, 回数)」
  • 右側から分割する:「rsplit()」
  • 改行ごとに分割する:「splitlines()」
  • 分割後の余分な空白を消す:「strip()」

文字列の分割で大切なのは、方法を暗記することだけではありません。

「どの文字を境界にするのか」「分割後のデータを何に使うのか」を先に考えると、適切な書き方を選びやすくなります。

まずはカンマや空白で区切られた身近な文字列を用意し、分割後のリストから必要な要素を取り出してみましょう。

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