こんな悩みを解決します。
split関数を使えば、自分で決めたルールに従って文字列を分割できます。
CSVデータの処理やテキスト解析でよく使われますね。
文字列を分割するコードを書く手間がぐっと減るので、作業効率がアップしますよ。
こんにちは、学生フリーランスエンジニアのいのうえ(@inouelog)です!
この記事では
Pythonのsplit関数で文字列を分割する方法
について解説します。
Pythonのsplit関数は文字列を分割する
Pythonのsplit関数とは、文字列を受け取り元の文字列を分割し、部分的な文字列をリストで返す関数です。
split関数が受け取る文字列はプログラムを書く人が指定します。例えば、次の文字列があるとします。
ぶどう、バナナ、さくらんぼ、マンゴー、みかん、メロン
プログラムを書く人が「、」の文字列を指定すると、split関数は
['ぶどう', 'バナナ', 'さくらんぼ', 'マンゴー', 'みかん', 'メロン']
というリストを返します。
Pythonのsplit関数で文字列を分割する方法
Pythonのsplit関数は第二引数まで取ります。
str.split(sep = None, maxsplit = -1)
引数 | パラメータ | デフォルト値 |
第一引数 | 分割する起点の文字列 | None(空白文字) |
第二引数 | 分割する回数 | -1(無制限) |
パラメータを-1にすると無制限になるのは違和感があるかもしれませんが、よくあるので覚えておきましょう。
第一引数に分割する起点の文字列を指定する
はじめに紹介した
ぶどう、バナナ、さくらんぼ、マンゴー、みかん、メロン
の文字列を「、」で分割するプログラムは、次のとおりです。
>>> 'ぶどう、バナナ、さくらんぼ、マンゴー、みかん、メロン'.split('、')
['ぶどう', 'バナナ', 'さくらんぼ', 'マンゴー', 'みかん', 'メロン']
今度は「、」ではなく半角スペースを使った次の文字列を分割します。
ぶどう バナナ さくらんぼ マンゴー みかん メロン
第一引数に半角スペースを指定しても良いですが、デフォルト値がNone(空白)なので、第一引数は指定してなくてもOKです。
>>> 'ぶどう バナナ さくらんぼ マンゴー みかん メロン'.split(' ')
['ぶどう', 'バナナ', 'さくらんぼ', 'マンゴー', 'みかん', 'メロン']
>>> 'ぶどう バナナ さくらんぼ マンゴー みかん メロン'.split()
['ぶどう', 'バナナ', 'さくらんぼ', 'マンゴー', 'みかん', 'メロン']
また、3つ分半角スペースがある文字列では、次のようになります。
>>> 'ぶどう バナナ さくらんぼ マンゴー みかん メロン'.split()
['ぶどう', 'バナナ', 'さくらんぼ', 'マンゴー', 'みかん', 'メロン']
>>> 'ぶどう バナナ さくらんぼ マンゴー みかん メロン'.split(' ')
['ぶどう', '', '', 'バナナ', 'さくらんぼ', 'マンゴー', 'みかん', 'メロン']
このように、第一引数を指定しない場合は空白は大きさに関わらず全て同じものとして扱われます。
>>> 'ぶどう バナナ さくらんぼ マンゴー みかん メロン'.split()
['ぶどう', 'バナナ', 'さくらんぼ', 'マンゴー', 'みかん', 'メロン']
ちなみに、split関数で文字列を分割する前に両端の不要な文字列を削除するなら、stripメソッドを使います。
第二引数に分割する回数(数値)を指定する
ぶどう、バナナ、さくらんぼ、マンゴー、みかん、メロン
分割する回数を指定しない場合は、デフォルト値で-1(無制限)が指定されているので、これまでどおり第二引数は指定しなくてもOKです。
>>> 'ぶどう、バナナ、さくらんぼ、マンゴー、みかん、メロン'.split('、', -1)
['ぶどう', 'バナナ', 'さくらんぼ', 'マンゴー', 'みかん', 'メロン']
>>> 'ぶどう、バナナ、さくらんぼ、マンゴー、みかん、メロン'.split('、')
['ぶどう', 'バナナ', 'さくらんぼ', 'マンゴー', 'みかん', 'メロン']
次のように、第二引数に分割する回数(数値)を指定して回数を変更できます。
>>> 'ぶどう、バナナ、さくらんぼ、マンゴー、みかん、メロン'.split('、', 0)
['ぶどう、バナナ、さくらんぼ、マンゴー、みかん、メロン']
>>> 'ぶどう、バナナ、さくらんぼ、マンゴー、みかん、メロン'.split('、', 2)
['ぶどう', 'バナナ', 'さくらんぼ、マンゴー、みかん、メロン']
>>> 'ぶどう、バナナ、さくらんぼ、マンゴー、みかん、メロン'.split('、', 4)
['ぶどう', 'バナナ', 'さくらんぼ', 'マンゴー', 'みかん、メロン']
参考:rsplit関数は右側から文字列を分割する
split関数に似た関数に「rsplit」があります。rsplit関数は右側から文字列を分割する関数です。
str.rsplit(sep = None, maxsplit = -1)
自明なのであえて言いませんでしたが、split関数は「左側から」文字列を分割する関数です。
split関数 | 左側から文字列を分割する |
rsplit関数 | 右側から文字列を分割する |
ちなみに、rsplit関数の’r’は
right(右側の)rear(後方の)
に由来しているそうです。
ぶどう、バナナ、さくらんぼ、マンゴー、みかん、メロン
の文字列をrsplit関数を使って右側から分割してみます。
>>> 'ぶどう、バナナ、さくらんぼ、マンゴー、みかん、メロン'.rsplit('、', 2)
['ぶどう、バナナ、さくらんぼ、マンゴー', 'みかん', 'メロン']
>>> 'ぶどう、バナナ、さくらんぼ、マンゴー、みかん、メロン'.rsplit('、', 4)
['ぶどう、バナナ', 'さくらんぼ', 'マンゴー', 'みかん', 'メロン']
以上、『【Python】split関数で文字列を分割する方法を徹底解説』でした。