目次
区切り文字で文字列を分割する
今回はPythonを利用して文字列を操作する方法をご紹介します
文字列に含まれる「特定の文字」を中心に分割し、どちらかを取り出したり、Dataframeとして利用する方法があります
この区切り文字を使い文字列を分割するには、splitを利用します
文字列のみ分割できるので、他のデータ型は利用できないので注意してください
どんなシーンで使うのか?
文字列の分割は非常に応用の利く関数です
漢字やひらがな、英字など特定の文字列で分割することができるのはもちろん、
記号や記号も指定することができます
- 「smart-hint@sample.co.jp」などのメールアドレスの「@」以前を抽出したい場合
- 「山田 太郎」などの名前を苗字・名前で分割したい場合
今回は文字列の空白を指定することで、文の中から単語ごとに区切りたいと思います
事前準備
Seabornというライブラリから、mpgという車のデータを取得しておきます
import seaborn as sns
df = sns.load_dataset('mpg')
df.head()
文字列を分割するsplit
splitを利用することで文字列を分割することができます
引数に「区切り文字」を指定することで、区切られたリストを取得することができます
例えば「ABC-DEF-GHI-JKL」という文字列を、「-」ハイフンで分割してみます
alphabet = 'ABC-DEF-GHI-JKL'
alphabet.split('-')
分割する回数を指定
splitの第二引数として「数値」を記述することで、分割する回数を制限することができます
例として分割回数を「1」として実行してみます
alphabet = 'ABC-DEF-GHI-JKL'
alphabet.split('-',1)
始めの分割は実行できましたが、その後(2回目以降)の分割は実行されません
Dataframeで利用する
Dataframeでもsplitを利用することができます
まずは事前準備で用意した「車の名前」nameを分割の対象とします
df['name']
文字列を指定するために、strを頭に付けるのを忘れないようにしましょう
今回は「空白」を区切り文字として引数に指定し、単語ごとに分割します
df['name'].str.split(' ')
複数の列としてDataframeで取り出す
分割した文字列を複数の列としてDataframe形式で取り出すには、expand=Trueというパラメータを利用します
df['name'].str.split(' ', expand=True)
区切った文字列の一部を取り出す
区切った文字列の一部を取り出すには、上記のexpandのパラメーターを利用し、分割した列番号 [0] を指定します
df['name'].str.split(' ',expand=True)[0]
区切りを「右」から実行する
splitには似たような手法としてrsplitが存在します
右から区切っていくため「right」の「r」という意味です
alphabet = 'ABC-DEF-GHI-JKL'
alphabet.rsplit('-',1)
まとめ
今回は区切り文字を使って、文字列の一部を取り出すsplitをご紹介してきました
区切る回数やDataframe形式での取得など、パラメータを指定することで柔軟に文字列を取得
文字列の操作は非常に簡単なので、ぜひ覚えて使ってみてください