【1分でわかるPython入門】split関数で文字列を最初だけ分割する方法

Python

split関数で文字列を最初だけ分割する方法について解説します
非常に簡単なので1分間ほどで理解できます。

split関数の文法の解説はこちらをご参照ください。

split関数を使用すれば文字列を区切り文字で分割することができます。
しかし、時には最初の最初の区切り文字だけを分割したいこともあるでしょう。

>>> "a,b,c".split(',')
['a', 'b', 'c']

しかし、普通に分割しようとすると文字列内にある全ての区切り文字で分割してしまいます。
split関数で文字列を最初だけ分割する方法は次の通りです。

split関数で文字列を最初だけ分割する方法

split関数の第二引数には何回分割を行うか指定できます。

したがって、下記のように第二引数に1を渡して実行すれば最初の区切り文字だけで分割できます
返却値はリスト形式で取得できます。

>>> "a,b,c".split(',', 1)
['a', 'b,c']

なお、空白文字で分割する場合は引数を渡さないことで分割できます。

>>> "a b c".split()
['a', 'b', 'c']

この場合、最初の空白文字で分割したい場合に下記のように分割数を指定するとエラーになってしまいます。

>>> "a b c".split(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be str or None, not int

これは、分割数のつもりで入力した1が区切り文字として扱われることでエラーになってしまいます。

したがって、空白文字で最初だけ分割したい場合は下記の方法で行う必要があります。

第一引数に空白文字を明示的に指定する。

>>> "a b c".split(" ", 1)
['a', 'b c']

名前付き引数の形式で分割数を指定する。

>>> "a b c".split(maxsplit=1)
['a', 'b c']

名前付き引数を用いれば入力した1が区切り文字として扱われるようになるので想定通りの結果が返ってきます。

タイトルとURLをコピーしました