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

用語比較

strip()と replace() の違い|空白を消す範囲(Python3基礎)

文字列から空白を消したいとき、strip() と replace() が候補になります。どちらも新しい文字列を返し、元の文字列は変えません。

違いは消す範囲で、strip() は両端だけ、replace() は文字列の途中も含めて一致するものすべてです。

このページは、strip() をかけたのに途中の空白が残った人や、replace(" ", "") で改行やタブが残った人向けです。決まりは、Python 公式ドキュメントの組み込み型(文字列メソッド)の項に書かれています。

この記事の根拠と出典

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

結論

s.strip()

両端の空白(引数があればその文字の集まり)を取り除いた新しい文字列を返す。途中は変えない。

s.replace(old, new)

old と一致する部分をすべて new に置き換えた新しい文字列を返す。count を渡すと最初の count 個だけ置き換える。

共通

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

違いを表で確認

比較軸s.strip()s.replace(old, new)
両端と途中に空白があるとき(s は " a b ")s.strip():'a b'(途中の空白は残る)s.replace(" ", ""):'ab'(すべて消える)
改行・タブが付いているとき(t は "a\tb\n")t.strip():'a\tb'(両端の改行は消え、途中のタブは残る)t.replace(" ", ""):'a\tb\n' のまま(半角スペースだけが対象)
文字を指定したとき"xxaxx".strip("x"):'a'"xaxbx".replace("x", ""):'ab'
元の文字列変わらない変わらない

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

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

PR

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

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

01

strip() をかけたのに、途中の空白が残った人

strip() が見るのは両端だけです。Python 3.9.6 では、" a b " の strip() は 'a b' で、途中の空白は残りました。途中も消したいなら replace() です。

02

replace(" ", "") で改行やタブが残った人

replace(" ", "") が置き換えるのは半角スペースの一致だけです。Python 3.9.6 では、"a\tb\n" の replace(" ", "") は元のままでした。公式ドキュメントでは、strip() の引数を省くと空白が取り除かれると説明されています。

03

strip("ab") を、文字列 ab を消す指定だと思った人

公式ドキュメントには、chars は接頭辞や接尾辞ではなく、その値の組み合わせすべてが取り除かれる、と書かれています。Python 3.9.6 では "abcba".strip("ab") が 'c' になりました。文字列そのものを消すなら replace() です。

具体例で使い分ける

例 1

同じ文字列に両方を使う

s = " a b " に対して、s.strip() と s.replace(" ", "") を実行します。

  • 公式ドキュメントは、strip() を両端の文字を取り除いたコピーを返すメソッドと説明しています。
  • replace() は、old と一致する部分をすべて new に置き換えたコピーを返すメソッドと説明されています。

結論: strip() は 'a b'、replace(" ", "") は 'ab' です。Python 3.9.6 で同じ結果を確認しました。

例 2

count で最初の1個だけ置き換える

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

  • 公式ドキュメントは、count を渡すと最初の count 個だけが置き換えられると説明しています。
  • s の先頭の半角スペース1個だけが消えます。

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

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

  1. 1

    消したい場所を決める

    両端だけなら strip() です。途中も消すなら replace() です。

  2. 2

    消したい文字を決める

    改行やタブも含めて両端の空白を消すなら、引数なしの strip() です。replace() は指定した文字列と一致する部分だけを置き換えます。

  3. 3

    戻り値を受け取る

    どちらも新しい文字列を返すので、s = s.strip() のように代入し直します。

試験での見分け方

  • 1strip() は両端だけを取り除き、途中は変えない。
  • 2引数なしの strip() は、両端の空白を取り除く。
  • 3replace() は一致する部分をすべて置き換える。count を渡すと最初の count 個だけ。
  • 4どちらも元の文字列は変わらない。

誤答しやすい選択肢

strip() で途中の空白も消えると思う

修正: strip() は両端だけです。途中も消すなら replace(" ", "") を使います。

replace(" ", "") で改行・タブも消えると思う

修正: 半角スペースだけが対象です。両端の改行やタブは strip() で消します。

s.strip() と書くだけで s が変わると思う

修正: 文字列は変更されません。s = s.strip() と代入し直します。

確認問題

Q1s = " a b " のとき、s.strip() は何を返しますか?

答え: 'a b'

両端の空白だけが取り除かれ、途中の空白は残ります。

Q2s = " a b " のとき、s.replace(" ", "") は何を返しますか?

答え: 'ab'

半角スペースの一致がすべて置き換えられます。

Q3s = " a b " に s.strip() を実行したあと、s は何ですか?

答え: " a b " のまま

strip() は新しい文字列を返すだけで、元の s は変わりません。

到達チェック

  • strip() が両端だけを取り除くと言える
  • replace() が一致する部分をすべて置き換えると言える
  • replace(" ", "") は半角スペースだけが対象だと言える
  • どちらも元の文字列を変えないと言える

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

よくある質問

Q全角スペースも strip() で消えますか?

A

Python 3.9.6 では、両端の全角スペースは引数なしの strip() で消えました。replace(" ", "") は半角スペースだけが対象です。

Q片側だけ消すにはどうしますか?

A

先頭だけなら lstrip()、末尾だけなら rstrip() です。このページでは両端の strip() を扱っています。

Qどちらが速いですか?

A

このページでは速度を比べていません。消す範囲で選びます。

次に見る比較

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