LoginSignup
61
55

More than 3 years have passed since last update.

いろんな空白文字を削除する【Python】

Last updated at Posted at 2020-04-05

概要

半角スペース、全角スペースを始めとする色んな種類のスペースをまとめて削除する方法をまとめます。

環境

macOS Catalina バージョン10.15.4
python 3.8.0

コード

改行コード、タブ、スペースなどをまとめて削除

str.split()を使う

#\u3000は全角スペース
text = "a\u3000 b\t\nc\r\n"
text = ''.join(text.split())

改行コード(\r\nや\n)だけをまとめて削除

str.splitlines()を使う

text = "a\u3000 b\t\nc\r\n"
text = ''.join(text.splitlines())

いくつかのスペース(例えば全角スペース、半角スペース、タブ)をまとめて削除

str.translate()を使う

text = "a\u3000 b\t\nc\r\n"
table = str.maketrans({
  '\u3000': '',
  ' ': '',
  '\t': ''
})
text = text.translate(table)

他にもたくさん削除したい文字がある場合は、str.maketrans()の引数を内包型表記で書くと楽です。

text = "a\u3000 b\t\nc\r\nd\x0ce\x0bf"
table = str.maketrans({
    v: '' for v in '\u3000 \x0c\x0b\t' #もしくは['\u3000',' ','\x0c','\x0b','\t']
})
text = text.translate(table)

補足:正規表現の利用

コメントで正規表現を使う方法について、アドバイスいただきましたので、以下にまとめさせていただきます。コメントありがとうございます。

import re

#改行、タブ、スペースなどをまとめて削除
text = "a\u3000\n\n b\t\nc\r\nd\x0ce\x0b\rf\r\n"
text = re.sub(r"\s", "", text)

#改行コード(\r\nや\n)だけをまとめて削除
text = "a\u3000\n\n b\t\nc\r\nd\x0ce\x0b\rf\r\n"
text = re.sub(r"[\r\n]", "", text)

#いくつかのスペース(例えば全角スペース、半角スペース、タブ)をまとめて削除
text = "a\u3000\n\n b\t\nc\r\nd\x0ce\x0b\rf\r\n"
text = re.sub(r"[\u3000 \t]", "", text)

参考

  1. スペースは" "だけじゃない的な話
  2. yohhoyの日記 - 空白文字を一括削除
  3. Pythonで改行を含む文字列の出力、連結、分割、削除、置換
61
55
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
55