Pythonのsplit関数で文字列を最初だけ区切る[maxsplit]

splitメソッドのmaxsplit引数を使って、文字列を最初の区切り文字でのみ分割する方法を解説します。

Pythonのsplit関数で文字列を最初だけ区切る[maxsplit]

maxsplitを使う(急いでいる人向け)

Pythonの文字列で最初だけ区切り文字で分割するには、split()メソッドにmaxsplitを指定します。str型のsplit()メソッドでは、第一引数に区切り文字、第二引数に分割する最大の回数を指定します。最大の回数を1回にすることで、最初に出てきた区切り文字だけで分割することができます

some_list = some_string.split('-', maxsplit=1)

以下、詳しく解説します。

split()関数で文字列を区切り文字で分割する方法

Pythonでは、str型の文字列のsplit()メソッドを使うことで、その文字列を特定の文字列で区切ってリストとして取得することができます。

たとえば、電話番号を表現した文字列をハイフン-で区切ってみます。

phone_number = '090-1111-xxxx'

# 文字列をハイフンで区切って、要素をリストとして取得する
nums = phone_number.split('-')
print(nums)
# ['090', '1111', 'xxxx']

split()メソッドの逆で、文字列を含んだリストを、特定の区切り文字で連結して文字列にするには、join()メソッドを使用します。

文字列を最初だけ区切り文字で分割する方法

split()メソッドでは、文字列中に含まれるすべての区切り文字で分割してリストを作成します。

しかし、状況によっては、最初だけ区切りをいれてリストを取得したいことがあります。

split()メソッドでは、第二引数にmaxsplitを指定することができ、区切りを入れる最大回数を指定することができます。なお、maxsplit=の表記は省略可能です。

# 最大1回だけ、指定した文字で分割する
nums_2 = phone_number.split('-', maxsplit=1)
print(nums_2)
# ['090', '1111-xxxx']

# maxsplit=の表記は省略可能
nums_2 = phone_number.split('-', 1)
print(nums_2)
# ['090', '1111-xxxx']

maxsplitを使うことで、1回だけしか区切らずにリストを作ることができました。ちなみに、maxsplitはあくまで分割する最大の回数を指定するため、文字列中に含まれる区切り文字より多くの数を指定したとしても、エラーなどは出ません。