Python splitの使い方

この記事のポイント

Pythonのsplitメソッドは、文字列を指定した区切り文字で分割してリスト化するメソッドです。

この記事を読むと、次のようなことが身に付きます。

  • splitメソッドの基本的な書き方と仕組みがわかる
  • 区切り文字や分割数を指定した使い方ができるようになる
  • テキストデータの整理など実際の開発で役立つ活用例を知る

この記事を通して、splitメソッドの正しい使い方を習得すれば、文字列の分割処理をスムーズに行えるようになります。

目次

splitとは?

splitとは、文字列を指定した区切り文字で分割し、分割後の各部分をリストとして返すメソッドです。

例えば「東京都/渋谷区/神南」のようにスラッシュ(/)で区切られた住所を、「都道府県」「市区町村」「町名」に分解して整理する作業がプログラムで可能になります。

Pythonのsplitメソッドを使うと、こうした文字列の切り分けをプログラムで自動的に行えます。

splitメソッドの特徴

  • 文字列を指定した区切り文字で細かく分割できる
  • 分割した結果は扱いやすいリスト形式で取得できる
  • 区切り文字を指定しない場合は空白文字で分割される
  • ログファイルの解析やデータの整理など幅広い場面で活用される
  • 文字列型に標準で用意されているため手軽に使用できる 

プログラムの中で文字列を意味のある単位に分けて処理する際に欠かせない機能です。

【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング

基本構文

splitメソッドの基本的な書き方は次のとおりです。

文字列.split(sep=None, maxsplit=-1)

引数の意味は以下の通りです。

  • sep:分割の基準となる区切り文字。省略すると空白文字(スペース、タブ、改行など)で分割される
  • maxsplit:分割する最大回数。省略または 1 を指定すると制限なく分割される

引数を指定しない場合は、連続するスペースや改行も一つの区切りとして扱われるため、余分な空白が混じったテキストでも自然に分割できます。これはsepに単純なスペースを指定した場合とは動作が異なるため注意が必要です。

以下に基本的なコード例を示します。

例1:引数なしで空白区切り分割

text = "ネコ イヌ ウサギ" result = text.split() # 空白文字で分割してリスト化 print(result)

出力結果

['ネコ', 'イヌ', 'ウサギ']

この例では、空白区切りの文字列をリストに変換しています。まず文字列型の変数textを用意し、引数なしでsplitメソッドを呼び出しています。スペースで区切られた文字列が自動的に分割され、要素が収められたリストが得られます。引数を省略した場合は、連続するスペースや文字列前後の余分な空白も適切に無視されます。

例2:区切り文字を明示して分割

text = "ネコ,イヌ,ウサギ" result = text.split(",") # カンマで分割してリスト化 print(result)

出力結果

['ネコ', 'イヌ', 'ウサギ']

この例では、カンマを区切り文字に指定して文字列を分割しています。sepにカンマを指定することで、CSV形式のようなデータを簡単にリスト形式に変換できます。区切り文字は1文字だけでなく、複数の文字からなる文字列も指定可能です。

例3:分割回数を制限する

text = "ネコ イヌ ウサギ キツネ" result = text.split(" ", maxsplit=2) # 2回だけ分割を実行 print(result)

出力結果

['ネコ', 'イヌ', 'ウサギ キツネ']

この例では、maxsplitを指定して分割回数を制限しています。maxsplit=2を指定すると、最初から2回だけ分割が行われ、残りの文字列は分割されずに最後の要素として保持されます。文字列の先頭部分のみを取り出したい場面などで役立ちます。

実用例

splitメソッドは基本構文の理解に加えて、実際のデータ処理の場面に合わせた使い分けが重要です。日常的な開発でよく使用されるパターンをコード例とともに紹介します。

スペース区切りで文を単語に分割する

文章をスペースで分割して、単語単位のリストを作成する基本的な使い方です。自然言語処理の前処理や、単語数のカウントなどに応用できます。

# 英語の文章を分割する例 sentence = "The cat sat on the mat" words = sentence.split() # スペースで単語に分割 print(words) print("単語数:", len(words)) # リストの要素数を計算

出力結果

['The', 'cat', 'sat', 'on', 'the', 'mat']
単語数: 6

この例では、英文を単語ごとに切り分けて全体の単語数を計算しています。まずsentenceに格納した文字列をsplitメソッドで分割し、単語のリストを作成しています。引数なしで呼び出すと連続したスペースも単語の境界として正しく処理されます。len関数でリストの要素数を取得することで、単語数を簡単に計測できます。

カンマ区切りのデータをリストに変換する

カンマで区切られた文字列をリストに変換する処理です。CSVファイルの1行分のデータを手動でパースしたいときなどに活用できます。

csv_line = "ライオン,トラ,ヒョウ,チーター" animals = csv_line.split(",") # カンマで分割してリスト化 for animal in animals: print(animal) # 各要素を順番に出力

出力結果

ライオン
トラ
ヒョウ
チーター

この例では、カンマ区切りのテキストからそれぞれのデータを取り出して表示しています。split(",")でカンマを基準に文字列を分割し、得られたリストをfor文で順番に処理しています。CSVファイルを1行ずつ読み込んで解析する際の基礎となる処理手法です。

分割数を制限して先頭部分だけを取り出す

maxsplit を使って、分割回数を制限する例です。ログデータなど、先頭の識別子だけを取り出してあとはまとめて扱いたい場合に便利です。

log_line = "ERROR ハヤブサ 翼を怪我した 飛行不能 要観察" parts = log_line.split(" ", maxsplit=2) # 先頭から2回のみ分割 level = parts[0] # ログレベルを取得 target = parts[1] # 対象データを取得 detail = parts[2] # 詳細メッセージを取得 print("レベル:", level) print("対象:", target) print("詳細:", detail)

出力結果

レベル: ERROR
対象: ハヤブサ
詳細: 翼を怪我した 飛行不能 要観察

この例では、ログデータから主要な項目と詳細メッセージを切り分けています。maxsplit=2を指定することで、先頭から2回だけ分割を行い、3つ目以降のスペースを含んだ文章をそのまま詳細情報として保持できます。決まった構造を持つテキストから必要な情報のみを取り出す場合に有効です。

改行コードで複数行テキストを分割する

複数行で構成されたテキストデータを行単位のリストに変換する処理です。テキストファイルを読み込んだ際に各行を処理したい場面で使えます。

text = "ペンギンは南極に生息する\nカバは川の近くに生息する\nキリンはサバンナに生息する" lines = text.split("\n") # 改行文字で分割 for line in lines: print(line) # 各行を出力

出力結果

ペンギンは南極に生息する
カバは川の近くに生息する
キリンはサバンナに生息する

この例では、改行コードを含んだ文章を行ごとに分割して表示しています。改行を表す特殊記号「\n」を区切り文字に指定することで、文章を行単位でリスト化できます。テキストファイルの内容を行ごとに処理する場合に頻繁に用いられます。

ピリオドで文章を文単位に分割する

文章をピリオドで分割して、文単位のリストを作る例です。テキスト解析の前処理として使えます。

paragraph = "ワシは空の王者と呼ばれる.その翼幅は2メートルを超えることもある.高い場所から獲物を狙う" sentences = paragraph.split(".") # ピリオドで文章を分割 for sentence in sentences: if sentence: print(sentence.strip()) # 前後の空白を除去して出力

出力結果

ワシは空の王者と呼ばれる
その翼幅は2メートルを超えることもある
高い場所から獲物を狙う

この例では、ピリオドを境目に文章を切り分けて整形しています。paragraph文をピリオドで分割したあと、stripメソッド(ストリップメソッド)で前後の余分な空白を取り除いて出力します。if文による判定を入れることで、末尾のピリオドによって作成される空の要素を出力から除外しています。

タブ区切りデータを処理する

タブ文字(\t)で区切られたデータを処理する例です。表計算ソフトからコピーしたデータなど、タブ区切り形式(TSV)のテキストを扱う際に役立ちます。

tsv_line = "コアラ\tオーストラリア\t草食\t樹上生活" fields = tsv_line.split("\t") # タブ文字で分割 print("動物名:", fields[0]) print("生息地:", fields[1]) print("食性:", fields[2]) print("生活様式:", fields[3])

出力結果

動物名: コアラ
生息地: オーストラリア
食性: 草食
生活様式: 樹上生活

この例では、タブ区切り形式(TSV)の文字列から各項目を取得しています。タブを表す「\t」を引数に指定することで、項目ごとに要素を取り出せます。取得したリストのインデックスを指定して各変数に割り振ることで、項目名と数値をわかりやすく提示できます。

複数の区切り文字に対応する分割処理

splitは一種類の区切り文字しか指定できませんが、reモジュールの re.split() と組み合わせることで複数の区切り文字に対応できます。

import re text = "クマ,オオカミ;キツネ イノシシ" animals = re.split(r"[,;\s]+", text) # 複数の記号や空白で分割 print(animals)

出力結果

['クマ', 'オオカミ', 'キツネ', 'イノシシ']

この例では、カンマやセミコロンなどの複数の記号が混ざった文章を分割しています。標準ライブラリのreモジュールが持つre.split関数を使用し、正規表現パターンを指定することで複雑な区切り文字を一括で処理できます。区切りルールが一定でないテキストを解析する場面で役に立ちます。

まとめ

Pythonのsplitメソッドは、文字列を指定した区切り文字で分割してリストを返す重要な機能です。この記事では、基本的な使い方から実際の活用例まで解説しました。

splitメソッドが活用できるような場面は次のようなケースです。

splitメソッドが活躍する場面

  • テキストデータの読み込みや整形を行いたいとき
  • ログファイルから必要な情報を取り出したいとき
  • 文章を単語や文ごとに分割して処理したいとき

splitメソッドを用いる上で、押さえておきたいポイントを覚えておきましょう。

重要なポイント

  • 引数を省略すると連続する空白文字がまとめて区切られる
  • 区切り文字に記号や文字列を直接指定できる
  • maxsplitを指定すると分割する回数を制御できる
  • 複数の区切り文字がある場合はreモジュールと組み合わせる

初めてPythonを学ぶ方も、この記事で紹介したsplitメソッドを実際に書いて、基本的な使い方を試してみてください。

文字列を分割するコードは、実際の開発で頻繁に使用されます。マスターしておけば役立つこと間違いなしです。ぜひsplitメソッドをマスターして、効率的なデータ処理プログラムを作成できるようになりましょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaトップ
  2. リファレンス
  3. Pythonのリファレンス記事一覧
  4. Python splitの使い方