AI資格ドリル
資格を選ぶ↓

用語比較

split()と join() の違い|文字列を分ける・つなぐ(Python3基礎)

split() と join() は、文字列とリストを行き来させる組み合わせです。split() は文字列を区切ってリストにし、join() はリストを1つの文字列につなぎます。

書き方で迷いやすいのは、join() がリストのメソッドではなく、区切りに使う文字列のメソッドである点です。

このページは、["a", "b"].join(",") と書いてエラーになった人や、join() に数値のリストを渡して TypeError になった人向けです。決まりは、Python 公式ドキュメントの組み込み型(文字列メソッド)の項に書かれています。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。

結論

s.split(sep)

s を sep で区切った文字列のリストを返す。sep を省くと、連続する空白を1つの区切りとして扱う。

sep.join(iterable)

iterable の文字列を、sep をはさんでつないだ1つの文字列を返す。中に文字列でないものがあると TypeError。

共通

元の文字列は変わらない。

違いを表で確認

比較軸s.split(sep)sep.join(iterable)
戻り値の型"a,b,c".split(","):['a', 'b', 'c'](リスト)",".join(["a", "b", "c"]):'a,b,c'(文字列)
メソッドを持つ側区切られる文字列 s のメソッド(s.split(","))区切りの文字列 sep のメソッド(",".join(リスト))
数値を含むとき文字列を分けるだけなので、数値は関係しない",".join([1, 2]):TypeError(文字列でない値が含まれる)
元のデータ元の文字列は変わらない元のリストは変わらない

Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)

試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

["a", "b"].join(",") と書いてエラーになった人

公式ドキュメントでは、join は str のメソッドで、区切りの文字列に付けて呼ぶ形で書かれています。",".join(["a", "b"]) と書き、結果は 'a,b' です。

02

join() に数値のリストを渡して TypeError になった人

公式ドキュメントには、iterable に文字列でない値があると TypeError になると書かれています。Python 3.9.6 では ",".join([1, 2]) が TypeError でした。",".join(map(str, [1, 2])) なら '1,2' になりました。

03

split() の結果に空の要素が混ざった人

公式ドキュメントでは、sep を指定すると連続する区切りはまとめられず、間に空の文字列が入ると説明されています。Python 3.9.6 では "a b c".split(" ") が ['a', 'b', '', 'c'] で、split() なら ['a', 'b', 'c'] でした。

具体例で使い分ける

例 1

分けてからつなぎ直す

s = "a,b,c" を split(",") で分け、"-" でつなぎ直します。

  • 公式ドキュメントは、split() を区切った文字列のリストを返すメソッドとして説明しています。
  • join() は、iterable の文字列を連結した文字列を返し、要素の間には join を呼んだ文字列が入ると説明されています。

結論: "-".join(s.split(",")) は 'a-b-c' です。Python 3.9.6 で同じ結果を確認しました。

例 2

maxsplit で最初の1回だけ分ける

s = "a,b,c" に対して、s.split(",", 1) を実行します。

  • 公式ドキュメントは、maxsplit を渡すとその回数までしか分けないと説明しています。
  • 最初の区切りで1回だけ分かれ、残りは1つの文字列として残ります。

結論: 結果は ['a', 'b,c'] です。Python 3.9.6 で同じ結果を確認しました。

問題文から答えを選ぶ手順

  1. 1

    変換の向きを決める

    文字列からリストを作るなら split()、リストから文字列を作るなら join() です。

  2. 2

    join() は区切りの側に書く

    ",".join(リスト) のように、区切りの文字列にメソッドを付けます。

  3. 3

    要素が文字列か確かめる

    数値が混ざるときは、map(str, ...) などで文字列にしてから join() に渡します。

試験での見分け方

  • 1split() は文字列を区切ってリストにする。
  • 2join() は文字列のリストを、区切りの文字列をはさんで1つの文字列にする。
  • 3join() は区切りの文字列のメソッドで、リストのメソッドではない。
  • 4join() に文字列でない要素があると TypeError。

誤答しやすい選択肢

リストに .join() を付ける

修正: 区切りの文字列に付けます。",".join(リスト) と書きます。

数値のリストをそのまま join() に渡す

修正: 文字列に直してから渡します。",".join(map(str, リスト)) と書きます。

split(" ") と split() を同じ動きだと思う

修正: sep を指定すると連続した区切りの間に空の文字列が入ります。sep を省くと連続する空白は1つの区切りです。

確認問題

Q1"a,b,c".split(",") は何を返しますか?

答え: ['a', 'b', 'c']

カンマで区切った文字列のリストを返します。

Q2"-".join(["x", "y", "z"]) は何を返しますか?

答え: 'x-y-z'

要素の間に "-" をはさんでつないだ文字列を返します。

Q3",".join([1, 2]) は何になりますか?

答え: TypeError

join() に渡す要素は文字列でなければなりません。

到達チェック

  • split() が文字列のリストを返すと言える
  • join() が1つの文字列を返すと言える
  • join() は区切りの文字列のメソッドだと言える
  • join() に文字列でない要素があると TypeError になると言える

同じ資格で次に知りたいこと

よくある質問

Q複数の区切り文字で分けられますか?

A

公式ドキュメントでは、複数の区切り文字で分けるには re.split() を使うと説明されています。split() の sep は複数文字でも、全体で1つの区切りとして扱われます。

Q空の文字列を split(",") するとどうなりますか?

A

Python 3.9.6 では [''] でした。sep を省いた "".split() は [] でした。

Qどちらが速いですか?

A

このページでは速度を比べていません。変換の向きで選びます。

次に見る比較

執筆: ミナト編集部(運営者情報を見る)