【Python入門】split関数で複数の区切り文字を分割する方法

Python

split関数を使い、文字列を空白文字で分割する方法について解説します。
非常に簡単なので1分間ほどで理解できます。

split関数の文法の解説は下記で解説しております。

re.split関数

複数の区切り文字で分割を行いたい場合は通常のsplit関数でなく、re.split関数を使用します。

re.split関数の文法は次の通りです。

import re
re.split(pattern, string, maxsplit=0, flags=0)

re.split関数を使用するにはimport reでreモジュールをインポートする必要があります。

第一引数patternには分割のパターンを入力します。
第二引数stringには分割対象の文字を入力します。
第三引数maxsplitには分割の回数を入力します。分割の回数を指定しない場合は可能な限り分割されます。
第四引数flagsにはフラグ定数を指定します。例えば、re.IGNORECASEを入力すると大文字と小文字を区別しなくなります。
返却値は区切った単語のリストを返します。

例えば、’a:b,c’という文字列を区切り文字「:」「,」で分割したい場合、次のように行います。

>>> import re
>>> re.split('[:,]', 'a:b,c')
['a', 'b', 'c']

第二引数の'a:b,c'は分割対象の文字列です。
第一引数の'[:,]'は分割のパターンで、正規表現が用いられております。

[]で囲んだ部分は集合を意味します。つまり、「:」か「,」で分割することを意味します。

split関数では複数の区切り文字を分割できない?

通常のsplit関数では一回で複数の区切り文字を分割できません。
したがって、次のようにfor文を使う必要があります。

>>> result = []
>>> for tmp in 'a:b,c'.split(":"):
...     for tmp2 in tmp.split(","):
...         result.append(tmp2)
...
>>> result
['a', 'b', 'c']

ただ、この方法で分割するよりもre.split関数を用いた方が簡単にかけるのでそちらを使用することをお勧めします。

まとめ

Pythonで複数の区切り文字で分割する場合は通常のsplit関数でなくre.split関数を使用しましょう

タイトルとURLをコピーしました