pythonのre.splitは文字列を正規表現パターンで分割することができます。
ちなみにsplitは、指定の区切り文字に完全一致した場合のみ分割できるので、
例えば1〜9のどれであっても数値があれば区切り文字にしたくてもできません。
完全一致ではなく、正規表現に一致した場合に文字列を分割したい場合は、re.splitが使えます。
re.split関数について
ここでは、re.split関数の基本的な使い方として、正規表現を利用して使う場合と正規表現を使わない場合とを解説します。
正規表現を使うre.split関数の使い方
re.split関数の記述方法
import re
re.split ( '正規表現',対象文字列 )
re.split関数を使う際には、reをimport文でインポートします。
(→Python:importの使い方)
数字の正規表現で分割する例
数字の正規表現で文字列を分割する場合には、「\d」を使います。
「\d」で0~9の数字のどれかを表します。
記述例
>>> import re
>>> umaibo_taste = re.split('\d+', 'chees124mentai')
>>> print(umaibo_taste)
['chees', 'mentai']
区切り文字で指定した「\d+」は、「\d」と「+」を付け足して「\d+」とすると1文字以上の連続した数字を表すことが出来ます。
re.split関数は本当に実用的で便利ですね。
アルファベットの正規表現で分割する例
アルファベットの正規表現で文字列を分割する場合、大文字の場合は[A-Z]を記述し・小文字の場合は[a-z]を記述します。
アルファベットの大文字で分割する記述例
>>> import re
>>> umaibo_taste = re.split('[A-Z]','chessANDmentai')
>>> print(umaibo_taste)
['chess', '', '', 'mentai']
うまい棒の味の間にある大文字の「AND」で区切るプログラムです。
でも余計な空欄の区切りがありますよね。
これは[]をもちいた場合、括弧内のいずれか 1 文字が処理されるため、「A」「N」「D」の1つ1つを処理した結果です。
「AND」をひと塊りとして処理したい場合は、[]に[]+を追記にすれば解決します。
余計な空欄を防ぐ記述例
>>> import re
>>> umaibo_taste = re.split('[A-Z]+','chessANDmentai')
>>> print(umaibo_taste)
['chess', 'mentai']
ちなみにひらがなを区切り文字にしたい場合は、[ぁ-ん]を記述し、カタカナは [ァ-ヴ]を指定すれば区切り位置となります。
正規表現を使わないre.split関数の使い方
正規表現をを使いこなせない時、処理が複雑でなければ、複数の区切り文字を指定する方法もあります。
複数の区切り文字を指定して分割する記述方法
import re
re.split ( ' 区切り文字 | 区切り文字 | 区切り文字’ , 対象文字列 )
「|」を使えば複数の区切り文字が指定できます。
記述例
>>> import re
>>> umaibo = 'chees154mentai365takoyak'
>>> umaibo_taste = re.split('154|365',umaibo)
>>> print(umaibo_taste)
['chees', 'mentai', 'takoyak']
正規表現を使わなくても、複数の区切り文字を指定する事はできますが、正規表現を覚えると物凄い効率化につながります。
特にスクレイピングにおいては使いこなすことが出来ると、どんなデータでも上手に取得する事が出来ますので是非覚えましょう。
(参考:Python:webスクレイピングの基礎)