1から始めるPythonデータ分析 - やりたいこと逆引きリスト ▶︎▶︎

【Python】区切り文字で文字列を分割する方法|split

区切り文字で文字列を分割する

今回はPythonを利用して文字列を操作する方法をご紹介します

文字列に含まれる「特定の文字」を中心に分割し、どちらかを取り出したり、Dataframeとして利用する方法があります

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

この区切り文字を使い文字列を分割するには、splitを利用します

文字列のみ分割できるので、他のデータ型は利用できないので注意してください

どんなシーンで使うのか?

文字列の分割は非常に応用の利く関数です

漢字やひらがな、英字など特定の文字列で分割することができるのはもちろん、

記号記号も指定することができます

  • 「smart-hint@sample.co.jp」などのメールアドレスの「@」以前を抽出したい場合
  • 「山田 太郎」などの名前を苗字・名前で分割したい場合

今回は文字列の空白を指定することで、文の中から単語ごとに区切りたいと思います

事前準備

Seabornというライブラリから、mpgという車のデータを取得しておきます

import seaborn as sns
df = sns.load_dataset('mpg')
df.head()
Seabornのmpgデータ

文字列を分割するsplit

splitを利用することで文字列を分割することができます

引数に「区切り文字」を指定することで、区切られたリストを取得することができます

例えば「ABC-DEF-GHI-JKL」という文字列を、「-」ハイフンで分割してみます

alphabet = 'ABC-DEF-GHI-JKL'
alphabet.split('-')
alphabet.split('-')

分割する回数を指定

splitの第二引数として「数値」を記述することで、分割する回数を制限することができます

例として分割回数を「1」として実行してみます

alphabet = 'ABC-DEF-GHI-JKL'
alphabet.split('-',1)
alphabet.split('-',1)

始めの分割は実行できましたが、その後(2回目以降)の分割は実行されません

Dataframeで利用する

Dataframeでもsplitを利用することができます

まずは事前準備で用意した「車の名前」nameを分割の対象とします

df['name']
df['name']

文字列を指定するために、strを頭に付けるのを忘れないようにしましょう

今回は「空白」を区切り文字として引数に指定し、単語ごとに分割します

df['name'].str.split(' ')
df['name'].str.split(' ')

複数の列としてDataframeで取り出す

分割した文字列を複数の列としてDataframe形式で取り出すには、expand=Trueというパラメータを利用します

df['name'].str.split(' ', expand=True)
df['name'].str.split(' ', expand=True)

区切った文字列の一部を取り出す

区切った文字列の一部を取り出すには、上記のexpandのパラメーターを利用し、分割した列番号 [0] を指定します

df['name'].str.split(' ',expand=True)[0]
df['name'].str.split(' ',expand=True)[0]

区切りを「右」から実行する

splitには似たような手法としてrsplitが存在します

右から区切っていくため「right」の「r」という意味です

alphabet = 'ABC-DEF-GHI-JKL'
alphabet.rsplit('-',1)
alphabet.rsplit('-',1)

まとめ

今回は区切り文字を使って、文字列の一部を取り出すsplitをご紹介してきました

区切る回数やDataframe形式での取得など、パラメータを指定することで柔軟に文字列を取得

文字列の操作は非常に簡単なので、ぜひ覚えて使ってみてください

お気に入り登録お願いします

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です