lstripやrstripの罠(単なる勘違いともいう)

5月 26th, 2017

文字列操作をおさらいしていて、変な事例に出くわした。

—-
st=’python’
print (st.lstrip(‘typ’))
—-

これの実行結果はどうなるか。

そのままpythonになる、と思っていた。が、これは間違い。「hon」が表示される。

あれれれれ~?????えーとえーとえーと。

print (st.lstrip(‘pyt’))

なら、「hon」が返るのは分かるけど。

そう、根本的に、勘違いしていた。lstripやrstrip、stripは、フレーズに反応しているのではなく、「文字」に反応するコマンドなのだ。つまり、「typ」と「pyt」は、lstrip等々にとっては同じ意味で、とにかく「tとyとp」。順序はどーでもいい。

知らなかったよ~~~~~。初歩の文字列操作なのに。がーんがーんがーん。

で、どう動いているかというと、lstrip(‘typ’)の場合、左から文字列をチェックして、

1.tかyかpがあれば、削除
2.tでもyでもpでもなければ、処理終了

ひーーー。間違えてた。かんっぺきに間違えてた。恐ろしや。rstripは右からチェック、stripは両方からチェック。ほえ~~~。

なので、行末の「\n」を削るのに「rstrip(‘\n’)」は、文字列途中の「\n」を削る心配はないにせよ、末尾に特殊な入力をすると、おかしなことになる可能性がなきにしもあらず、ということに…

むむむ。とりあえず、まあ、いい、ことにしようかな(本当にいいのか?)

関連記事

  1. 正規表現vs類語辞書
  2. リスト全ての要素の改行(’\n’)を削る
  3. pythonの「or」はちょっとくせ者っぽい
  4. 変数のidや型をprint文で表示させる
  5. クラスの継承を試してみた
  6. printでの「,」と「+」
  7. 複数リストをループさせた時、ループカウントを得る
  8. 他のクラスからインスタンス変数って使えるんだね

Comments are closed.