Pythonのsplitとは?
Python splitとは、文字列(テキストデータ)を指定した区切り文字で分割し、分割後の各部分をリストとして返すメソッドです。メソッドとは、特定のデータ型に紐づいた機能のことで、splitは文字列型(str)に用意されている機能の一つです。
たとえば「ネコ,イヌ,ウサギ」という文字列をカンマ(,)で分割すると、["ネコ", "イヌ", "ウサギ"] というリストが得られます。この操作を手作業で行うとなれば、どこにカンマがあるかを調べて、そこで文字列を切り分けるという処理が必要です。splitはそれを自動的にやってくれます。
Pythonでデータを扱う際、テキストをそのままの形で処理するよりも、意味のある単位に分けてから処理するほうが効率的です。たとえばログファイルの解析、CSVの読み込み、ユーザー入力の整理など、文字列を分割する場面はプログラミングの現場では日常的に発生します。
splitを使いこなすことで、こうした場面でのコード記述がぐっと楽になります。初めてPythonに触れる方でも、この記事を読めば基本的な使い方から応用まで身につけられるよう丁寧に解説していきます。
【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング
基本構文
splitメソッドの基本的な書き方は次のとおりです。
引数の意味は以下の通りです。
- sep:分割の基準となる区切り文字。省略すると空白文字(スペース、タブ、改行など)で分割される
- maxsplit:分割する最大回数。省略または 1 を指定すると制限なく分割される
引数を何も指定しなかった場合は、連続するスペースや改行なども一つの区切りとして扱われるため、余分な空白が混じったテキストでも自然に分割できます。これは sep に単純なスペースを指定した場合とは動作が異なるため、注意が必要です。
以下に基本的なコード例を示します。
例1:引数なしで空白区切り分割
出力結果
['ネコ', 'イヌ', 'ウサギ']split() と書くだけで、スペースで区切られた文字列を自動的にリストへ変換できます。引数を省略した場合、連続するスペースや先頭・末尾のスペースも適切に無視されます。
例2:区切り文字を明示して分割
出力結果
['ネコ', 'イヌ', 'ウサギ']sep にカンマを指定することで、CSV形式のような区切り文字付きデータを簡単にリストへ変換できます。区切り文字は1文字でなくてもよく、複数文字からなる文字列も指定できます。
例3:分割回数を制限する
出力結果
['ネコ', 'イヌ', 'ウサギ キツネ']maxsplit=2 を指定すると、2回だけ分割し、残りはまとめて最後の要素として格納されます。先頭部分だけを取り出したい場合などに役立ちます。
実用例
splitは基本的な構文を覚えるだけでなく、実際のデータ処理の場面でどう使うかが大切です。ここでは、よく出てくる場面に沿ったコード例を紹介します。各例は実際に動かせるコードです。実際の処理のイメージをつかみながら読み進めてください。
スペース区切りで文を単語に分割する
文章をスペースで分割して、単語単位のリストを作成する基本的な使い方です。自然言語処理の前処理や、単語数のカウントなどに応用できます。
出力結果
['イヌはとても忠実な動物です']
単語数: 1※日本語はスペースで単語が区切られないため、英語文で試すとより自然な結果が得られます。以下に英語の例も示します。
出力結果
['The', 'cat', 'sat', 'on', 'the', 'mat']
単語数: 6split() を引数なしで呼び出すと、連続するスペースも一つの区切りとして扱われます。そのため、単語間のスペースが複数あっても正しくリスト化できます。len() 関数と組み合わせることで、単語数を取得する処理も一行で記述できます。
カンマ区切りのデータをリストに変換する
カンマで区切られた文字列をリストに変換する処理です。CSVファイルの1行分のデータを手動でパースしたいときなどに活用できます。
出力結果
ライオン
トラ
ヒョウ
チーターsplit(",") でカンマを区切り文字として指定すると、各動物名が一つずつのリスト要素として取り出されます。for 文と組み合わせることで、各要素に対して順番に処理を施すことができます。CSVのような構造化テキストを扱う際の基本パターンとして覚えておくと、さまざまな場面で応用が利きます。
分割数を制限して先頭部分だけを取り出す
maxsplit を使って、分割回数を制限する例です。ログデータなど、先頭の識別子だけを取り出してあとはまとめて扱いたい場合に便利です。
出力結果
レベル: ERROR
対象: ハヤブサ
詳細: 翼を怪我した 飛行不能 要観察maxsplit=2 を指定すると、先頭から2回だけ分割します。ログの先頭にある識別子(ここでは ERROR と ハヤブサ)だけを取り出し、それ以降のメッセージ部分はひとかたまりのまま扱えます。この方法を使えば、特定フォーマットのテキストから必要な部分だけを効率よく抽出できます。
改行コードで複数行テキストを分割する
複数行にわたるテキストデータを行単位に分割する処理です。テキストファイルを読み込んだ際に各行を処理したい場面で使えます。
出力結果
ペンギンは南極に生息する
カバは川の近くに生息する
キリンはサバンナに生息する\n は改行を表す特殊文字です。split("\n") とすることで、改行ごとに文字列を分割し、各行をリストの要素として取得できます。ファイルから読み込んだテキストを行単位でループ処理する際に、この書き方はよく使われます。なお、splitlines() という専用メソッドもありますが、splitでも同様の結果が得られます。
ピリオドで文章を文単位に分割する
文章をピリオドで分割して、文単位のリストを作る例です。テキスト解析の前処理として使えます。
出力結果
ワシは空の王者と呼ばれる
その翼幅は2メートルを超えることもある
高い場所から獲物を狙うピリオド(.)を区切り文字として指定することで、各文をリストの要素として取り出せます。strip() メソッドを組み合わせることで、余分な空白が含まれていても整形して出力できます。if sentence: の条件分岐は、末尾のピリオドによって空文字列が生じた場合に対応するためのものです。
タブ区切りデータを処理する
タブ文字(\t)で区切られたデータを処理する例です。表計算ソフトからコピーしたデータなど、タブ区切り形式(TSV)のテキストを扱う際に役立ちます。
出力結果
動物名: コアラ
生息地: オーストラリア
食性: 草食
生活様式: 樹上生活\t はタブ文字を表す特殊文字です。split("\t") とすることで、タブで区切られた各フィールドをリストとして取得できます。インデックスを使って各要素に名前をつけて扱うことで、テーブル形式のデータを読みやすく処理できます。CSVと同様の考え方で応用が利きます。
複数の区切り文字に対応する分割処理
splitは一種類の区切り文字しか指定できませんが、reモジュールの re.split() と組み合わせることで複数の区切り文字に対応できます。
出力結果
['クマ', 'オオカミ', 'キツネ', 'イノシシ']re.split() は正規表現を使って文字列を分割する関数です。[,;\s]+ は「カンマ、セミコロン、または空白文字が1つ以上続く部分」を区切りとして扱うことを意味します。入力データの形式が一定でない場合でも、柔軟に対応できます。re モジュールはPython標準ライブラリに含まれており、import re と書くだけで利用できます。
まとめ
Python splitは、文字列を指定した区切り文字で分割してリストを返すメソッドです。引数なしで使えば空白文字で分割され、区切り文字を指定すればCSVやTSVのような構造データにも対応できます。maxsplit で分割回数を制限すれば、先頭部分だけを取り出す処理も簡潔に書けます。また、re.split() と組み合わせることで複数の区切り文字にも柔軟に対応できます。
Python splitが活躍する場面
- CSVやTSVなどのテキストデータの読み込みと整形
- ログファイルの解析と必要情報の抽出
- ユーザーが入力したテキストの単語・項目ごとの処理
重要なポイント
- 引数なしのsplitは空白全般を区切りとして扱う:スペース・タブ・改行を含む空白文字をまとめて区切りとして認識するため、整形されていないテキストでも安定して動作します
- maxsplitで分割回数を制御できる:先頭の識別子だけを取り出したいログ解析などで非常に効果的な機能です
- re.split()との組み合わせで表現力が大幅に広がる:複数の区切り文字が混在するデータを一括で処理できるため、現場での応用範囲が広がります
splitをはじめとする文字列操作メソッドに慣れることで、Pythonを使ったデータ処理の幅が大きく広がります。最初は基本的な使い方から試して、徐々に引数の指定や他のメソッドとの組み合わせを習得していきましょう。実際にコードを動かしながら試すことが、理解を深めるうえで最も効果的です。