空白を削除した状態で出力したいな。
便利なメソッドを教えてください…
こちらの悩みを解決しますね。
結論から言うと、下の通りです。
空白文字を削除するためのメソッド
- replaceメソッド
- splitメソッド
この2つを詳しく解説します。
本記事の内容
・空白を削除できるメソッド一覧
・replaceで空白を削除
・splitで空白を削除
・splitlinesで改行を削除
・文字を削除するためのメソッド
・stripメソッドにおける注意点
この記事を書いている自分は、プログラミング歴4年の駆け出し以上中堅未満のエンジニアです。
過去には、AI囲碁をWebアプリ化したり、Pythonでのアプリ開発、Web制作やフロントエンドのデザインまで幅広くやってきました。
今回はそんな経験をもとに解説していこうかと。
当サイトでは、覚えるべきところを全てまとめているので、画面を撮影して何度も読み返すことをおすすめします。
それでは、解説していきます!
空白を削除できるメソッド一覧
pythonで空白文字を除去するときに、役立つメソッドは以下の2つです。
空白文字を削除するためのメソッド
- replaceメソッド
- splitメソッド
上から順に解説していきますね。
replaceで空白を削除
replaceメソッドで空白を削除する方法は以下の通りです。
replaceで空白を削除する方法
‘[文字列]’.replace(‘ ‘, ”)
‘[変数]’.replace(‘ ‘, ”)
実際に例を見てみましょう。
num = '111 222'
num_new = num.replace(' ','')
print(num_new)
111と222の間にある空白を削除してみます。
replaceは、文字列の一部を置換することができるメソッドですが、このように空白を削除することもできます。
参考までに、replaceで文字列中の元文字列を置換文字列で置換する方法も紹介します。
replaceで文字列を置換する方法
‘[文字列]’.replace(‘[元文字列]’, ‘[置換文字列]’)
‘[変数]’.replace(‘[元文字列]’, ‘[置換文字列]’)
splitで空白を削除
splitを使えば、改行コード、タブ、unicodeでの空白などを簡単に削除できます。
これらはプログラム内で、エスケープ文字というものを使って表します。
エスケープ文字の一覧
- 改行コード・・・\n
- タブ・・・\t
- unicodeでの空白・・・\u3000
エスケープ文字の解説も合わせてご覧ください。
いくつか注意すべきことをまとめます。
- 「\」はバックスラッシュと同じ意味
- \uでunicode文字が使える
- \tは「Tab」を押したときと同じ
- \u3000は全角の空白文字
splitを使ったサンプルコードは以下の通りです。
text = "1\t2\u3000 3\n4"
print(text)
text = ''.join(text.split())
print(text)
3行目にsplitメソッドが使われていますね。これを新たにtextに代入すると、以下の通りの出力結果になります。
上2行が何の削除処理もしていない場合で、一番下の「1234」が、splitメソッドによってタブ、unicodeでの空白処理、改行といった処理を削除した結果になります。
これらの削除処理が一度に出来るのですから、splitは使いこなせばとても便利なメソッドだということがお分かりいただけたかと思います。
splitlinesで改行を削除
ついでに、改行を削除するためのメソッドも解説します。
splitlinesを使えば、改行だけを削除することができます。
まずは入力を下のように書き換えます。
text = "1\t2\u3000 3\n4"
print(text)
text = ''.join(text.splitlines())
print(text)
split()がsplitlines()に置き換わっているのが分かりますね。
では、これを実行してみましょう。
先程の3列目の出力結果と見比べてみると、タブやunicodeの空白がそのまま点在しており、それらの命令は無効になっておりません。
その代わり3と4の間にある改行が無効になっています。
この処理は例えば、1行ごとの空白を含めた文字数を数えたり、後述するsplitを使う注意点など局所的に役に立つことがあるので覚えておいて損はありません。
その他、splitメソッドには
・垂直タブ【\v】
・フォームフィード(改ページ)【\f】
・キャリッジリターン(復帰)【\r】
などにも使えます。
文字列を削除するためのメソッド
また、文字列を削除するためのメソッドもあります。
文字列を削除するためのメソッド
- strip・・・文字列を削除
- lstrip・・・左側を削除
- rstrip・・・左側を削除
「left=左」「right=右」という意味があるので、覚えやすいですね。
下2つだけ解説していきますね。
lstripで文字列を削除
では具体的な使い方をみていきましょう。
num = '123456'
num_new = num.lstrip('123')
print(num_new)
この場合、出力結果は
と、なります。左側の123が削除されていますね。
rstripで文字列を削除
rstrip()の場合は
num = '123456'
num_new = num.rstrip('456')
print(num_new)
この場合、出力結果は
予想通りの結果となりました。
ちなみに、例えばlstripで終端(右側)にある文字列を消そうとしても無効になり、そのままnumの値(123456)がかえってきます。もちろん逆も同様です。
これは、stripメソッドと違って文字列全体ではなく、末尾から値を取り出して削除する、という性質をもっているからです。rstripの場合も、先頭から文字列の値を取り出します。
stripメソッドにおける注意点
先ほどのような場合なら、どちらもstripメソッドを使っても問題ないです。
ですが、次のコードをご覧ください。
language = "python.jpeg"
print(language.strip('.jpeg'))
実行結果は次になります。
これは「.jpeg」という拡張子のみを消したかったにも関わらず、「.jpeg」の3文字目にpが入っているため、「python」の頭文字まで削除されてしまったという例です。
先述の通り文字列全体から値を取り出すという性質の弊害をもっているためです。
これを防ぐには先程のrstripを使うのが良いでしょう。
language = "python.jpeg"
print(language.rstrip('.jpeg'))
出力結果はこうなります。
このようにすれば、rstripで指定された右側の.jpegだけ消してくれます。
例えば画像をまとめて処理したりする場合などに、こういった手法を使うこともあります。
まとめ:空白を削除するメソッドは全部で2つ
もう一度言います。
空白を削除できるメソッドは以下の通りです。
- replaceメソッド
- splitメソッド
他にも、改行を削除できるメソッド、文字列を削除できるメソッドなどを紹介したので、参考にしてください。
今回は以上です!
コメント