2017-12-08 1 views
-1

最近私はpythonを学び始めました。rstripで厄介な振る舞いに遭遇しました。'HelloWorld'.rstrip(' World ')は' He 'の後ろのすべてを削除します

私が理解していることは、str.rstrip()は、引数に指定した文字のいずれかが見つかるとすぐにすべての文字を削除することです。

>>> a = 'HelloWorld' 
>>> a.rstrip('l') 
'HelloWorld' 
>>> a = 'HelloWorld' 
>>> a.rstrip('World') 
'He' 

は私が持っている結果によって完全に混乱しています。

「He」を代わりに作成するはずの最初のコードは使用しないでください。

答えて

0

Pythonでrstrip()は、引数として文字のセットを取ります。

引数を指定しない場合、デフォルトは空白です。

それがあれば、右から文字のセットをストリッピングを開始し、それが文字(s)は、入力文字列の右端には、あなたの文字セットで言及が発生した場合にのみ。 lは、最初の例では除去されなかった理由を説明する

Worldマッチ引数に設けられたキャラクタ・セットと第2の例で

。だから、とoHelloにあるので、Worldにはloが含まれているので、世界は取り除かれます。

これは正しい結果であるHeを残します。

+0

私は本当に答えに+1を使用できます。私は私の評判を向上させるために働いているので、もっと貢献することができます。ありがとう! –

1

[rl]stripメソッドは、引数として渡す文字列内の任意の文字を削除します。 lo'World'であるため、それらも取り除かれます。 rstrip docsから

文字列内の文字は、このメソッドがコールされた文字列の末尾から取り除かれます。

...ではありません。渡された文字列は削除されますが、その文字は削除されます。

0

あなたは引数として渡されたセットにない文字に遭遇するとすぐに右から開始して停止するようです。

0

documentationをご覧ください。

rstripは、変更する文字列の右側にある引数の文字をすべて削除します。したがって、 "lloWorld"はすべて "World"の文字で構成されているため、削除されます。 eはありませんので、そこで停止します。

一方、最初の呼び出しでは、lは実際には文字列の右側にありません(rstrip)ので、何も削除されません。

2

str.rstrip()rstrip()に供給される文字のセット(渡された場合、およびいないNone)に存在する文字列のから文字を削除します。 rstrip()は、ストリング内の文字がストリッピング文字のセットにないとすぐに停止します。

したがって、最初の例では、文字列aの最後の文字はで、これはrstrip()に渡されるストリッピング文字のセットに含まれていません。したがって、元の文字列からは何も削除されません。

第2の例では、セット'World'のいずれかの文字を文字列の末尾から削除できます。サブストリング'lloWorld'にはストリッピング文字に含まれる文字が含まれているため、これらの文字はすべて削除され、最終結果として'He'が残っています。

ただし、文字列の末尾に、セット'World'にない文字があるとします。フルストップ。

>>> 'HelloWorld'.rstrip('World') 
'He' 
>>> 'HelloWorld.'.rstrip('World') 
'HelloWorld.' 

'.''World'ではないので、何も取り除かれていません。

0

string.rstripは、末尾の文字が削除された文字列のコピーを返します。

「L」は終わりではないように、a.rstrip('l')は何も変わりません。

しかし、a.rstrip('World')は、「世界は」末端に存在する文字列として、文字列 '世界のすべての文字をテキストから削除されます。さらに、読み取りのための

チェックこれを:http://python-reference.readthedocs.io/en/latest/docs/str/rstrip.html

関連する問題