【Python】文字列の分割(splitメソッド)

Pythonにおける文字列の分割のsplitについて紹介します。



splitメソッドによる文字列の分割

文字列を分割したリストを生成するのがsplitメソッドです。

str.split(sep=None, maxsplit=-1)

文字列を区切り文字列sepで区切った単語をリストとして返却します。

maxsplitを与えることで分割回数は最大でmaxsplit回となります(すなわち最大でmaxsplit + 1要素)。

maxsplitを省略するか-1を与えた場合は分割回数の制限がなくなります。

コード例


print('ABC,XYZ,DEF'.split(',')) # コンマで分割
print('ABC,XYZ,DEF'.split(',', maxsplit=1)) # 最大で1回分割

実行結果

['ABC', 'XYZ', 'DEF']
['ABC', 'XYZ,DEF']

maxsplitを与えることで分割回数は最大でmaxsplit回となります(すなわち最大でmaxsplit + 1要素)。

sepは複数の文字でも可能で、文字列に区切り文字が連続して含まれている場合はその箇所は空文字列として区切られます。

空の文字列を分割すると["]を返却します。

sepを省略するかNoneを与えると連続する空白文字を区切りとします。

先頭や末尾に空白があっても除去されたうえで分割されます。

そのため空文字列をNoneで分割すると[]を返却します。

コード例


print('ABC,,XYZ,,DEF'.split(',')) # 連続するコンマで分割
print('ABC  XYZ DEF'.split()) # スペースで分割
print('  ABC  XYZ DEF  '.split()) # 先頭や末尾のスペースも除去して分割

実行結果

['ABC', '', 'XYZ', '', 'DEF']
['ABC', 'XYZ', 'DEF']
['ABC', 'XYZ', 'DEF']


実用例としてキーボードから入力された氏名を名字と名前をコンマで区切って入力させ2つの文字列を分割して表示させます。

コード例


lname,fname = input('名字,名前 : ').split(',')

print(f'名字 = {lname}')
print(f'名前 = {fname}')

実行結果

名字,名前 : 田中,太郎
名字 = 田中
名前 = 太郎

上のコードではinput関数で読み込んだ文字列’田中,太郎’をコンマ記号’,’で区切って['田中’, '太郎’]という2要素のリストを返却します。

その2要素’田中’,と’太郎’を順にlnameとfnameのそれぞれ代入して表示しています。

partitionメソッドとsplitlinesメソッドによる文字列の分割

splitメソッド以外にも文字列を分割するメソッドがあります。

partitionメソッドは文字列を分割文字より前、分割文字、それ以降の3つに分割します。

splitlinesメソッドは文字列を改行文字で分割します。

コード例


print('ABC,XYZ,DEF'.partition(',')) # partitionメソッドで分割
print('ABC,XYZ,DEF'.splitlines()) # splitlinesメソッドで分割

実行結果

('ABC', ',', 'XYZ,DEF')
['ABC,XYZ,DEF']

partitionメソッドでは分割が行われるのは1回のみです。

そのため最初のコンマで区切られて2個目のコンマでは区切られません。

返却するのは分割した3つのタプルです。