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

用語比較

lstrip()とremoveprefix()の違い|'Arthur: three!' が 'ee!' になる理由(Python3基礎)

lstrip() に文字列を渡すと、その文字列を先頭から削除するように見えますが、実際は違います。引数は取り除く文字の集合で、先頭からその集合に含まれる文字が続く限り削られます。

そのため 'Arthur: three!'.lstrip('Arthur: ') は 'three!' ではなく 'ee!' になります。文字列そのものを先頭から一度だけ取り除きたいときは、Python 3.9 で追加された removeprefix() を使います。

このページは、lstrip() で接頭辞を消したつもりが文字が余分に消えた人向けです。両者の決まりは、Python 公式ドキュメントの組み込み型(文字列のメソッド)の項に書かれています。

この記事の根拠と出典

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

結論

lstrip(chars)

chars は接頭辞ではなく文字の集合。先頭から、その集合に含まれる文字が続く限り取り除く。省略すると空白を取り除く。

removeprefix(prefix)

文字列が prefix で始まるときだけ、その prefix を一度取り除いた文字列を返す。始まらなければ元の文字列のコピーを返す。Python 3.9 で追加。

末尾側

rstrip() と removesuffix() が、末尾に対して同じ関係になっている。

違いを表で確認

比較軸lstrip(chars)removeprefix(prefix)
引数の意味lstrip(chars):取り除く文字の集合removeprefix(prefix):先頭に付いている接頭辞の文字列そのもの
'Arthur: three!' の結果lstrip('Arthur: '):'ee!'removeprefix('Arthur: '):'three!'
先頭が一致しないときlstrip:集合に含まれる文字が先頭に無ければ何も取り除かないremoveprefix:元の文字列のコピーを返す('BaseTestCase'.removeprefix('Test') は 'BaseTestCase')
使える Python のバージョンlstrip:古くからあるremoveprefix:Python 3.9 で追加

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

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

PR

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

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

01

接頭辞を消したのに文字が余分に消えた人

lstrip('Arthur: ') は文字列 'Arthur: ' を消すのではなく、A・r・t・h・u・':'・空白のどれかが先頭から続く限り消します。'three!' の t・h・r も集合に含まれるので消えてしまいます。

02

先頭の空白だけ消したい人

lstrip() を引数なしで使います。引数を省略するか None にすると、空白が取り除かれます。

03

決まった接頭辞があるときだけ消したい人

removeprefix() を使います。接頭辞で始まらないときは元の文字列がそのまま返ります。

具体例で使い分ける

例 1

lstrip() と removeprefix() の結果の差(公式ドキュメントの例)

'Arthur: three!' に対して、lstrip('Arthur: ') と removeprefix('Arthur: ') を実行します。

  • lstrip('Arthur: ') は、'Arthur: ' に含まれる文字を先頭から取り除きます。'Arthur: ' の後に続く 't'・'h'・'r' も集合に含まれるので、'ee!' まで削られます。
  • removeprefix('Arthur: ') は、先頭が 'Arthur: ' で始まるので、その部分だけを取り除きます。

結論: 答えは 'ee!' と 'three!' です。Python 3.9.6 で実行して同じ結果を確認しました。

例 2

文字の集合として取り除かれる例(公式ドキュメントの例)

'www.example.com'.lstrip('cmowz.') を実行します。

  • chars は接頭辞ではなく、c・m・o・w・z・ピリオドという文字の集合です。
  • 先頭の 'www.' はすべて集合に含まれるので取り除かれます。次の 'e' は集合に含まれないので、そこで止まります。

結論: 答えは 'example.com' です。公式ドキュメントは、この引数は接頭辞ではなく、値のすべての組み合わせが取り除かれると説明しています。

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

  1. 1

    取り除きたいものが文字か文字列かを決める

    空白や記号のような文字の種類を消したいなら lstrip()、決まった文字列を一度だけ消したいなら removeprefix() です。

  2. 2

    引数の意味を確認する

    lstrip の引数は接頭辞の文字列ではなく、取り除く文字の集合です。

  3. 3

    先頭が一致しない場合を考える

    removeprefix は一致しなければ元の文字列を返します。実行環境が Python 3.9 以上かも確かめます。

試験での見分け方

  • 1lstrip(chars) の chars は文字の集合で、接頭辞ではない。
  • 2removeprefix(prefix) は、先頭が prefix のときだけ一度取り除く。
  • 3引数を省略した lstrip() は、先頭の空白を取り除く。
  • 4removeprefix() と removesuffix() は Python 3.9 で追加された。

誤答しやすい選択肢

lstrip('Arthur: ') が文字列 'Arthur: ' を消すと思う

修正: 集合として扱われるので、先頭から続く A・r・t・h・u・':'・空白が削られます。'three!' の先頭 3 文字も削られ、結果は 'ee!' です。

removeprefix() が一致しないとエラーになると思う

修正: エラーにならず、元の文字列のコピーを返します。'BaseTestCase'.removeprefix('Test') は 'BaseTestCase' です。

removeprefix() を古い Python で使う

修正: removeprefix() と removesuffix() は Python 3.9 で追加されました。3.8 以前では使えません。

確認問題

Q1'Arthur: three!'.lstrip('Arthur: ') の結果は何ですか?

答え: 'ee!'

'Arthur: ' は接頭辞ではなく文字の集合です。't'・'h'・'r' も集合に含まれるため、先頭から削られます。

Q2'Arthur: three!'.removeprefix('Arthur: ') の結果は何ですか?

答え: 'three!'

先頭が 'Arthur: ' で始まるので、その部分だけが一度取り除かれます。

Q3'BaseTestCase'.removeprefix('Test') の結果は何ですか?

答え: 'BaseTestCase'

先頭が 'Test' で始まらないので、元の文字列のコピーが返ります。

到達チェック

  • lstrip の引数が文字の集合だと説明できる
  • 'Arthur: three!' が 'ee!' になる理由を言える
  • removeprefix は一度だけ、一致したときだけ取り除くと言える
  • removeprefix が Python 3.9 で追加されたと言える

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

よくある質問

Qlstrip() に渡す文字列は接頭辞ですか?

A

接頭辞ではなく、取り除く文字の集合です。公式ドキュメントも、この引数は接頭辞ではないと説明しています。

Q接頭辞だけを一度取り除くにはどうしますか?

A

removeprefix() を使います。先頭が一致しないときは元の文字列のコピーが返ります。

Qremoveprefix() は Python のどのバージョンから使えますか?

A

Python 3.9 からです。末尾側の removesuffix() も同じバージョンで追加されました。

次に見る比較

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