Pythonで複数スペースを1つのスペースにする方法

Pythonをやっていると色々大変な問題があります。その1つに確実に「空白」という問題がでてくると思います。

複数の空白は避けて通れない

空白問題は避けられない問題の1つだと勝手に思っております。特に複数の空白がある問題が出ることもあると思います。

複数の空白(全角スペース、半角スペース、タブ等)を1つの空白(半角スペース)にしたい

こんな風に思う事ありませんか?僕はあります。最近毎日思っています。
複数の空白を1つにするやり方を調べてみました。paiza.ioで簡単なサンプルと一緒にやってみたいと思います。

複数スペーすのあるコード

コードはこんな感じになります

text = "こん    にちは 世界 こんばんは  この世界 "

text = text.replace(" ", ":")
text = text.replace(" ", ":")
text = text.replace("\t", "「タブ」")

print(text)

実行すると以下のようになります

こん::::にちは:世界:こんばんは::この世界:

半角スペース→「:」(半角コロン)
全角スペース→「:」(全角タブ)
タブ→「タブ」
と表示されるようにしたのですが、どうやら勉強サイトではタブは半角スペース4つ分になってしまいました。

FireShot Capture 078 - (Python3) - ブラウザでプログラミング・実行ができる「オンライン実行環境」- paiza.IO - paiza.io

スペースを置き換たい

理想はこん にちは 世界 こんばんは この世界とスペースを置き換えてやっていきたいです。色々やり方をみてみます

replaceで置き換える

空白の置き換えでよく使うreplaceで試してみます。

text = "こん    にちは 世界 こんばんは  この世界 "

text = text.replace(" ", "")
text = text.replace(" ", "")

print(text)

実行すると

こんにちは世界こんばんはこの世界

スペースが全て消えてしまいました

FireShot Capture 080 - (Python3) - ブラウザでプログラミング・実行ができる「オンライン実行環境」- paiza.IO - paiza.io

全てのスペースを削除するならありですが、複数の空白(半角スペース、全角スペース、タブ等)を1つの空白(半角スペース)にしたいという点ではNGです

splitを使う

空白の削除という点ではsplitがあがると思います。splitを使えば空白の除去ができます

text = "こん    にちは 世界 こんばんは  この世界 "

text = text.split()

print(text)

実行すると以下のようになります。

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

FireShot Capture 081 - (Python3) - ブラウザでプログラミング・実行ができる「オンライン実行環境」- paiza.IO - paiza.io

スペースは1つになったのですが、表示の仕方が今回の理想ではありません。これから何か手を加えればきっと理想の表示になると思うのですがそこから先のやり方がわかりません。わかればおそらくこういうページみたりしないと思います。

joinを使う

Pythonにはjoinメソッドというのがあります。文字列の連結をするのに使われます。書き方は

変数 = 区切り文字.join(変数)

となります。今回は1つの半角スペースにしたいため、splitを使います。

text=" ".join(text.split())

このようになります。半角スペース1つにするためにしています。やっていることはtext = text.split()と同じです。

text = "こん    にちは 世界 こんばんは  この世界 "

text=" ".join(text.split())
print(text)

実行すると

こん にちは 世界 こんばんは この世界

FireShot Capture 082 - (Python3) - ブラウザでプログラミング・実行ができる「オンライン実行環境」- paiza.IO - paiza.io

思った通りの結果になりました。複数の空白を1つの半角スペースになりました。

お役に立ちましたか?

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

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