🐍 Python
str.split(sep=None, maxsplit=-1)
文字列を指定した区切り文字で分割し、リストにして返すメソッドです。CSV形式の1行を項目ごとに分けたり、パスやURLを構成要素に分けたりと、AIが生成したデータ処理コードで最も頻繁に登場するメソッドの一つです。
構文: str.split(sep=None, maxsplit=-1)
戻り値: 分割された文字列のリスト
区切り文字を指定する
引数に区切り文字を渡すと、その文字(列)を境目にして分割します。
s = "2026-08-09"
print(s.split("-")) # ['2026', '08', '09']
引数なしなら空白でまとめて分割する
引数を省略すると、空白・タブ・改行をまとめて区切り文字とみなし、連続する空白は1つの区切りとして扱い、前後の空白も無視します。手作業でsplit(" ")を書くよりも安全な場面が多いです。
s = " apple banana cherry "
print(s.split()) # ['apple', 'banana', 'cherry']
区切り文字を明示すると連続する区切りが空文字列を生む
ここが引数なしのsplit()との大きな違いです。区切り文字を明示指定すると、連続した区切り文字の間に空文字列の要素が入ります。CSVの空欄を検出したいときはこの挙動を逆に利用できますが、意図せず空文字列が混ざって後続処理でエラーになることもあるため注意が必要です。
s = "a,b,,c"
print(s.split(",")) # ['a', 'b', '', 'c']
maxsplitで分割回数を制限する
第2引数maxsplitに数値を渡すと、その回数だけ分割してあとはそのまま残します。「先頭の1項目だけ取り出して残りはまとめて扱いたい」という場面で便利です。
s = "user:pass:extra:info"
print(s.split(":", 1)) # ['user', 'pass:extra:info']
パラメータ
- sep(省略可)
- 区切り文字列。省略時は空白文字(連続する空白もまとめて1区切り、前後の空白は無視)
- maxsplit(省略可)
- 分割する最大回数。省略時(-1)は制限なしで全て分割する
💡 rsplitとの違い
str.split()は先頭から分割していきますが、str.rsplit()は末尾から分割していきます。maxsplitを指定しない限り結果は同じですが、"a.b.c".rsplit(".", 1)は['a.b', 'c']になり、split(".", 1)の['a', 'b.c']とは逆側が残ります。「拡張子だけ末尾から切り出したい」ときはrsplitが便利です。
分割したリストを元の形式に戻す方法はstr.joinのページで解説しています。