Pythonのsplitとは?メソッドや関数で文字列を分割する方法
thumb_pythonsplit_01
Pythonのsplitとは?メソッドや関数で文字列を分割する方法
アンドエンジニア編集部
2022.12.17
この記事でわかること
Pythonでは、文字列分割のsplit()・rsplit()・splitlines()メソッドやre.split()関数が提供されます
分割されたデータはリストオブジェクトに格納されます
分割で格納されたデータは、用途に応じて文字列や数値としてデータ分析に活用できます

Pythonのsplitで文字列を分割

img_pythonsplit_01

スマホの利用拡大により、SNSから発信される投稿やメールなど文字データの取扱いが増えています。文字列を処理する場合に、英語の文章を単語に分割したり、データの区切りで分割したりなどの加工機能があると便利です。

ここでは、Pythonに実装されている機能となるsplitメソッドや、関数などを使って文字列を分割する方法を解説していきます。

初心者向けPython:基礎構文や入門情報を丁寧に解説!

Pythonのメソッド

Pythonのメソッドとは、呼び出す際に使用するデータオブジェクトに結び付いた関数の1種を表します。そもそも関数とは、データとの結びつきが不要で単独で使用できるものを表します。

この場合は、クラスと関係なしに利用できます。メソッドと関数の違いを簡単に言うと、データの渡し方の違いと考えると良いでしょう。

Pythonのメソッド一覧を紹介!基礎知識についても解説

文字列を分割するメソッド

文字列を分割するメソッドは、split()・rsplit()・splitlines()が用意されています。このほか正規表現操作関数としてre.split()も提供されています。

Pythonのリストオブジェクト

Pythonでは、これらの文字列を分割するメソッドを用いて文字列データを渡すことで、個別の文字列に分割することができます。分割された文字列は、リストオブジェクトに格納されます。リストオブジェクトは、角カッコ( “[  ]” )で要素を示した格納形式です。

Python以外のプログラミング言語では、配列という呼び方をする場合が多いです。

Pythonのsplitの使用方法

img_pythonsplit_02

文字列を分割するメソッドや関数に登場するsplitとは、「分割する」という意味合いを持つ言葉です。ここでは、Pythonのsplitで文字列を分割する方法を解説していきます。先に挙げたsplit()・rsplit()・splitlines()、およびre.split()を実際に使用します。

【参考】:Python Documentation contents

split()メソッドの使用方法

split()メソッドの使用方法は、文字列型のオブジェクトに対して以下の用法で使います。

用法:str.split(デリミタ文字列、最大分割数)

デリミタ文字列は、区切り文字で空白スペース(” “)・カンマ(”,”)・スラッシュ(”/”)などが用いられます。デフォルトは空白スペース(” “)です。最大分割数は最大で何回分割するか指定できます。デフォルトは、-1で分割回数に制限はありません。

実際の使用例は以下の通りです。

txt='This is a pen.' lst=txt.split() print(txt) print(lst)

実行結果は、次の通りです。

This is a pen. ['This', 'is', 'a', 'pen.']

【参考】:Python ドキュメント 組み込み型 str.split

rsplit()メソッドの使用方法

rsplit()メソッドの用法は、以下の通りです。

用法:str.rsplit()(デリミタ文字列、分割数)

デリミタ文字列は、split()メソッドと変わりがありません。分割数は最大で何回分割するか指定するものですが、split()メソッドと異なり、右端から最大何回分割するか指定します。

実際の使用例は以下の通りです。

txt='1,2,3,4,5,6,7,8,9,10' lst_all=txt.split(',') lst_l  =txt.split(',', 3) lst_r  =txt.rsplit(',', 3) print(txt) print(lst_all) print(lst_l) print(lst_r)

実行結果は、次の通りです。

['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
['1', '2', '3', '4,5,6,7,8,9,10']
['1,2,3,4,5,6,7', '8', '9', '10']

【参考】:Python ドキュメント 組み込み型 str.rsplit

splitlines()メソッドの使用方法

splitlines()メソッドの用法は、以下の通りです。

用法:str.splitlines(改行部分の保持)

splitlines()メソッドは、文字列を改行部分で分解し、それぞれの行のリストを戻します。引数にTrueを指定すると戻すリストに改行コードを含みます。デフォルトはFalseで、戻すリストに改行コードは含みません。

実際の使用例は以下の通りです。9と10の間には、違いの確認のため空行を入れてみました。

txt='1 2 3\n4 5 6\n7 8 9\n\n10' lst_f=txt.splitlines() lst_t=txt.splitlines(True) print(txt) print(lst_f) print(lst_t)

実行結果は、次の通りです。9と10の間の空行は、リストに反映されています。

1 2 3 4 5 6 7 8 9   10 ['1 2 3', '4 5 6', '7 8 9', '', '10'] ['1 2 3\n', '4 5 6\n', '7 8 9\n', '\n', '10']

【参考】:Python ドキュメント 組み込み型 str.splitlines

re.split()関数の使用方法

splitlines()関数は、正規表現にマッチした部分で文字列を分割してくれます。用法は、以下の通りです。

用法:re.split(パターン, 文字列, 最大分割数, フラグ)

パターンは、正規表現の出現パターンです。最大分割数を指定することで、何回まで分割するか指定できます。デフォルトは0で、最大分割数を設定する場合は1以上の値を指定します。正規表現のパターンで取り込む文字を丸カッコ(”( )”)で括ると、全ての文字列を戻します。

丸カッコを使わない場合は、該当する文字のみを戻します。

使用例は以下の通りです。

import re txt='Peter Piper picked a peck of pickled peppers. ' lst_all=re.split(r'(\W+)', txt) lst_word=re.split(r'\W+', txt) print(txt) print(lst_all) print(lst_word)

実行結果は、次の通りです。

Peter Piper picked a peck of pickled peppers. ['Peter', ' ', 'Piper', ' ', 'picked', ' ', 'a', ' ', 'peck', ' ', 'of', ' ', 'pickled', ' ', 'peppers', '. ', ''] ['Peter', 'Piper', 'picked', 'a', 'peck', 'of', 'pickled', 'peppers', '']

パターンを活用すると、複数の異なる区切り文字で分割することもできます。空白スペース(” “)・カンマ(”,”)・プラス(”+”)・マイナス(”-”)で区切った使用例は、以下の通りです。

import re txt='1 2,3 4-5 6-7+8,9,10' lst=re.split('[ ,+-]', txt) print(txt) print(lst)

実行結果は、次の通りです。

1 2,3 4-5 6-7+8,9,10 ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']

【参考】:Python ドキュメント 正規表現操作 re.split

文字列を分割するための関連知識

img_pythonsplit_03

これまでに文字列を分割するsplit()・rsplit()・splitlines()、そしてre.split()を学びました。ここでは、実際に使用するための関連情報を挙げておきます。

リストオブジェクトの数を確認する

分割した文字列はリストオブジェクトに格納されます。リストに格納された文字列がいくつに分割されたか確認する場合は、len()で配列数を確認します。次の様に実施すれば分割された数が分かります。

txt='This is a pen.' lst=txt.split() length=len(lst) print('Number of words: ',length) for i in range(length):     print(lst[i]) for j in lst:     print(j)

for文の使用方法を2つ、記載しました。実行例は次の通りです。

Number of words:  4 This is a pen. This is a pen.

配列の数を知りたいのではなく最後の単語を取り込みたいのであれば、インデックスに-1を指定することで、最後の配列を表示させることもできます。

txt='This is a pen.' lst=txt.split() print('Last word is: ',lst[-1])

実行例は次の通りです。

Last word is:  pen.

分割を繰り返す方法

処理によっては、1回ずつ、1文字ずつ文字列から単語を抽出したい場合もあります。その場合には、1つの文字ずつ取り込んで処理するのが良いでしょう。

具体的には、次のように1回1文字ずつリストに取り込み、リストのデータをシフトしていきます。

txt='This is a pen.' lst=txt.split(' ',1) length=len(lst) while length > 1:     print(lst)     txt=lst[1]     lst=txt.split(' ',1)     length=len(lst) print(lst) print('Done.')

このやり方で取り込んだ文字の最初の要素を用いて、データを処理することができます。実行例は次の通りです。

['This', 'is a pen.'] ['is', 'a pen.'] ['a', 'pen.'] ['pen.'] Done.

メソッドを使わず文字列を分割する方法

Pythonでは、メソッドや関数を使わずに文字列を分割することもできます。スライスという機能です。スライスでは、文字列[開始位置:終了位置] のように始点と終点を指定し、分割することができます。

例えば先頭3文字が識別コード、それ以降が文字データとする場合は、以下のようにスライスで分割できます。

txt='001This is a pen.' index=txt[:3] word=txt[3:] print(txt) print(index) print(word)

実行結果は、次の通りです。

001This is a pen. 001 This is a pen.

Pythonのsplitで文字データを活用しましょう

img_pythonsplit_04

文字列データは、非定型の帳簿やネットから発信される投稿やメールなど、非構造化データと言われる膨大なデータに含まれます。効率よくデータを整理することで、データ分析や活用に役立てることができます。データ活用の前段階として、Pythonのsplitメソッドや関数を、データ整理に役立てましょう。

気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【無料個別転職相談会】アプリケーションエンジニア向け!リモート・在宅勤務で働きたい方へ
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【無料個別転職相談会】アプリケーションエンジニア向け!リモート・在宅勤務で働きたい方へ
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT