デジタルトレンドナビ
システム開発

2023.12.04

Pythonにおけるsplitの使い方!空白・正規表現・改行での分割方法

Pythonにおけるsplitの使い方!空白・正規表現・改行での分割方法

Python splitとは、ある文字列を任意の場所や文字で区切る関数です。これから機械学習に携わっていくエンジニアは、習得すべきスキルだと言えるでしょう。


そこで本記事では、Python splitを使った分割ができるようになるために、概要や使い方、例文を紹介します。機械学習モデルの精度を上げるためにも、ぜひ参考にしてください。

この記事でわかること

  • Python splitの概要
  • split関数の使い方
  • split関数の例文

Python splitとは

Python splitとは

Python splitとは、ある文字列を任意の場所や任意の文字で区切ることができる関数です。実際に文字列を区切る際、ルールづけをすることで、区切る位置や文字を指定します。

そのときのソースコードとしてsplit関数を用いるのが一般的です。区切った文字列はリストで表示されます。なお、ソースコードとしては以下のいずれかを用います。

string.split()

「string」には、実際に区切る文字列が入ります。

また、上記のソースコードを応用したり、追加でコードを書くことで、さまざまな処理を行うことが可能です。そこで次の章では、Python splitの使用方法について例文を挙げつつ解説します。


Python splitの使い方

Python splitの使い方

Python splitは以下のような使い方ができます。

split():空白や区切り文字で分割

空白や区切り文字を使って分割するやり方です。最もシンプルな方法で、これからsplitに触れる人はこの分割方法に慣れてから次の分割方法に移ることをおすすめします。そこでこの節では、以下の3つの分割方法に分けて解説します。

  • 空白で分割する方法
  • 区切り文字で分割する方法
  • 回数を指定して分割する

空白で分割する方法

文字列のなかにある空白で分割するやり方です。たとえば、以下のような文字列があったとします。

string.split(区切り文字)

それぞれの間には空白があります。その空白で文字列を分割するということです。

この際ソースコードでは、区切り文字を指定する必要はありません。つまり以下のようなソースコードになる

string.split(文字列を区切り文字, 区切る回数)

splitの横にある()には何も記載する必要はありません。このソースコードを実行すると以下のような出力結果になります。

text = ”A B C D E”

なお、文字列のなかに空白が2個ある場合でも問題なく分割可能です。たとえば、以下のような文字列があったとします。

text = ”A B C D E”

res = text.split()
print(res)

それぞれの間には2つの半角の空白が存在します。これを先ほどのソースコードに当てはめたものが以下のとおりです。

[‘A‘,‘B‘,‘C‘,‘D‘,‘E‘]

上記のソースコードを実行すると、以下のような出力結果になります。

text = ”あ い う え お”

少しわかりにくいですが、区切られた文字の間に半角スペースがひとつ生まれています。補足として、区切る文字を指定しない場合は、空白だけではなくタブや改行などでも区切られます。改行で分割する方法については後ほど解説します。

区切り文字で分割する方法

任意の文字を指定してその部分で分割するやり方です。Pythonのsplitでは、文字列を区切る文字を指定できます。たとえば、以下のような文字列があったとします。

text = ”あ い う え お”

res = text.split()
print(res)

上記の文字列に含まれる「,」を区切る場所したい場合、以下のようなソースコードを書きます。

[‘あ‘, ‘い‘, ‘う‘, ‘え‘, ‘お‘]

splitの横にある()のなかに、ダブルクォーテーションで囲った「,」を記載しています。これで「,」を区切り文字として指定したことになりました。このソースコードを実行すると以下のような出力結果になります。

text = ”マグロ,タイ,サバ,サンマ,イワシ”

先ほどの文字列のなかにあった「,」で文字列が区切られています。注意点として、出力結果にある「,」と文字列の「,」は別物です。わかりやすいように、以下のような文字列を用いて説明します。

text = ”マグロ,タイ,サバ,サンマ,イワシ”

res = text.split(“,”)
print(res)

今度は文字列を「/」で区切るために、以下のソースコードを書きます。

[‘マグロ‘,‘タイ‘,‘サバ‘,‘サンマ‘,‘イワシ‘]

このソースコードを実行すると、以下のように出力されます。

text = ”野球/サッカー/バスケットボール/テニス/陸上”

出力結果の「,」は、あくまでも区切られた位置がわかりやすいように表示されており、文字列とは関係がないというわけです。

回数を指定して分割する方法

Pythonのsplitでは、回数を指定して分割することも可能です。たとえば、以下の文字列があるとします。

text = ”野球/サッカー/バスケットボール/テニス/陸上”

res = text.split(“/”)
print(res)

「ニホンザル」と「カモメ」の間の「/」で区切りを終わらせたい場合、左から数えて2回目の「/」で区切りの処理を終了させなければいけません。その際、以下のソースコードを書きましょう。

[‘野球’,’サッカー’,’バスケットボール’,’テニス’,’陸上’]

splitの横にある()のなかには、区切り文字に指定する文字と区切る回数を記載しています。区切り文字はダブルクォーテーションで囲って、区切り文字と区切る回数の間には「,」を記載するのを忘れないようにしましょう。上記のソースコードを実行すると、以下のような出力結果になります。

text = ”チワワ/ニホンザル/カモメ/アヒル/白鳥”

このように左から2番目の「/」を最後に区切りがストップし「カモメアヒル/白鳥」は区切られていません。区切り文字に指定した「/」もそのままです。このように、区切る回数を指定すれば、任意の場所で処理を終了させることができます。

rsplit():右端から分割

前の節で分割回数を指定した際、左からカウントされていました。これは、split()で区切る回数を指定すると、左から順番に区切られる仕様だからです。

しかし、場合によっては右から順番に区切りたいケースもあるでしょう。その際はrsplit()を使います。たとえば、以下の文字列があるとします。

text= ”チワワ/ニホンザル/カモメ/アヒル/白鳥”

res = text.split(“/”,2)
print(res)

右から1番目と2番目の「*」で区切りたい場合、以下のソースコードを書きます。

[‘チワワ‘,‘ニホンザル‘,‘カモメ/アヒル/白鳥‘]

今まで「res = text.split」と書いていたのを「res = text.rsplit」に変更しました。そのほかは、左から区切るときと変わりません。rsplitの横にある()のなかも、左は区切り文字で右は区切る回数を指定しましょう。

上記のソースコードを実行すると、以下のような出力結果になります。

text = ”うどん*そば*ラーメン*カツ丼*サンドイッチ”

「うどん*そば*ラーメン」は区切られていませんが「カツ丼」と「サンドイッチ」は区切られています。

re.split():正規表現で分割

これまでの方法では、区切り文字をひとつしか指定していませんでした。しかし、場合によっては、複数の区切り文字を指定したいケースもあるでしょう。その際はre.split()を用いて正規表現で区切ることで、複数の区切り文字を指定できます。

正規表現とは、複数の文字列をひとつの文字列として表現する手法です。たとえば、以下の文字列があったとします。

text = ”うどん*そば*ラーメン*カツ丼*サンドイッチ”

res = text.rsplit(“*”,2)
print(res)

すべての単語をひとつずつ区切りたい場合、以下のようなソースコードを書きます。

[‘うどん*そば*ラーメン’,’カツ丼’,’サンドイッチ’]

正規表現で文字列を分割する場合、はじめに「import re」を記載する必要があります。また「res = text.split()」と記載していたところを「res = re.split(“,|/”,text)」と記載してください。

さらには、文字列の名前が()のなかに入り、区切り文字をその左に記載します。なお、区切り文字同士は「|」で分けましょう。上記のソースコードを実行すると、以下のような出力結果になります。

text = ”ONE,TWO/THREE”

複数の文字を1度に区切り文字にできるので、ソースコードが冗長にならずに済みます。

splitlines():改行で分割

splitlines()を用いて改行で分割する手法です。たとえば、以下のような文字列があったとします。

import re

text = ”ONE,TWO/THREE”

res = re.split(“,|/”,text)
print(res)

この文字列を改行という意味である「\n」で区切りたい場合、splitlines()が使えます。ソースコードは以下のとおりです。

[‘ONE’,’TWO’,’THREE’]

このソースコードを実行すると、以下のような出力結果になります。

text = “卵\nケチャップ\nお米\n鶏肉\nミックスベジタブル\nバター”

なお、split()を使えば「\n」を区切り文字に指定しても、上記のような出力結果を得られます。しかし、区切り文字を指定する手間がかかるので、splitlines()を使用することをおすすめします。

文字列の分割はsplitを活用しよう

文字列の分割はsplitを活用しよう

Pythonでプログラミングコードを書く際、文字列を分割したいシーンが出てくるはずです。その際は、split関数を用いて文字数を分割しましょう。


文字列にもさまざまな区切り方があるため、それぞれの特徴やどういった出力結果を得たいのかを見極めて、今回紹介した方法のなかから適したやり方を選ぶようにしてください。


テクノデジタルでは、split関数に関するお問い合わせを受け付けております。開発でつまずく場面があれば、テクノデジタルのスタッフが誠心誠意対応させていただきます。お気軽にお問い合わせください。


投稿者

  • デジタルトレンドナビ編集部

    システム開発、Webサイト制作、ECサイトの構築・運用、デジタルトランスフォーメーション(DX)など、デジタルビジネスに関わる多岐の領域において、最新のトレンド情報や実践的なノウハウを発信してまいります。