見出し画像

.stripと.replaceの処理の違い

Pythonをやっていてきっとあたる問題があるのは空白だと独断と偏見でおもっています。空白の問題をどうするか?削除するのか?置換するのか?どうやってやるのか?などあると思います。ここではその違いを書いて行きます。

空白の削除は二通り

.strip→空白(スペース、タブ、改行コード等)を削除する
.replace→空白を置換する

結果は同じでも、微妙に違いがあります。簡単なサンプルを用意して説明してみます。

今回はpaiza.IOを使ってやっていきます

.stripのケース

text = "こんにちは 世  界"
text = text.split()

print(text)

「こんにちは」全角スペース「世」タブ「界」となっています。テキストの中に空白としては全角スペースとタブの2種類はいっています。実際に実行してみると

['こんにちは', '世', '界']

スクリーンショット 2020-06-05 20.56.33

となります。

.replaceのケース

次にreplaceを見てみます。コードは一部変えただけになります。

text = "こんにちは 世  界"
#text = text.split()
text = text.replace(' ', '')
print(text)

わかりやすく片方をコメントアウトしました。実行すると

こんにちは世 界

スクリーンショット 2020-06-05 21.01.52

処理が明確に違います。replaceの場合は、置換なのでタブは置換されておりません。次に、表示のされ方も違います。

片方はリストで空白毎にカンマが入った区切りの返しで、片方は文字列で返してきています。

インデックスの番号も違う

「こんにちは」という文字を取り出してみます。stripの場合はコードは以下になります。

text = "こんにちは 世  界"
text = text.split()
#text = text.replace(' ', '')
print(text[0])

実行すると

こんにちは

スクリーンショット 2020-06-05 21.13.28

となります

replaceのケースを実行します

text = "こんにちは 世  界"
#text = text.split()
text = text.replace(' ', '')
print(text[0])

先ほどとの違いはコメントアウトの位置になります。それ以外は一緒です。実行してみます

スクリーンショット 2020-06-05 21.17.54

「こ」だけが表示されました。replaceは1文字ずつ区切られていることになります。

まとめ

・stripの場合はインデックスを指定しないとリストでカンマ区切りの表示になる。
・stripはインデックスが空白毎で分かれる
・replaceは文字列の置換のため、スペースの置換はできてもタブの置換はできない
・replaceは1文字ずつインデックス番号に分けられる

こんな感じになると思います。何気なく使っている空白削除ですが、改めて見ると処理に違いがあるので勉強になります。

お役に立ちましたか?

投げ銭 or お仕事をいただけるともっと頑張れます!
・note
・仮想通貨(bitflyer)
キャッシュ
のどれでも構いません
ビットコインアドレスは以下になります
3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS

この記事が気に入ったらサポートをしてみませんか?