概要
半角スペース、全角スペースを始めとする色んな種類のスペースをまとめて削除する方法をまとめます。
環境
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)