用語比較
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冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
strip() をかけたのに、途中の空白が残った人
strip() が見るのは両端だけです。Python 3.9.6 では、" a b " の strip() は 'a b' で、途中の空白は残りました。途中も消したいなら replace() です。
replace(" ", "") で改行やタブが残った人
replace(" ", "") が置き換えるのは半角スペースの一致だけです。Python 3.9.6 では、"a\tb\n" の replace(" ", "") は元のままでした。公式ドキュメントでは、strip() の引数を省くと空白が取り除かれると説明されています。
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
消したい場所を決める
両端だけなら strip() です。途中も消すなら replace() です。
- 2
消したい文字を決める
改行やタブも含めて両端の空白を消すなら、引数なしの strip() です。replace() は指定した文字列と一致する部分だけを置き換えます。
- 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(" ", "") は半角スペースだけが対象だと言える
- どちらも元の文字列を変えないと言える
関連ページで確認する
同じ資格で次に知りたいこと
- list.append()と insert() の違い|要素を足す位置(Python3基礎)
リストの append() は末尾に1個足し、insert() は指定した位置に足します。Python 公式チュートリアルの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
- split()と join() の違い|文字列を分ける・つなぐ(Python3基礎)
文字列の split() は区切って文字列のリストにし、join() は文字列のリストを1つの文字列につなぎます。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
- dict.get()と setdefault() の違い|辞書に書き込むかどうか(Python3基礎)
辞書の get() はキーが無いとき辞書を変えずに既定値を返し、setdefault() は既定値を辞書に挿入して返します。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
よくある質問
Q全角スペースも strip() で消えますか?
Python 3.9.6 では、両端の全角スペースは引数なしの strip() で消えました。replace(" ", "") は半角スペースだけが対象です。
Q片側だけ消すにはどうしますか?
先頭だけなら lstrip()、末尾だけなら rstrip() です。このページでは両端の strip() を扱っています。
Qどちらが速いですか?
このページでは速度を比べていません。消す範囲で選びます。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
