はじめに
ユーザーに名前の入力を促すと、どうしても半角スペースや全角スペースが名前の間に入ってくることがあります。
例)理想:田中太郎 現実:田中 太郎
こちら側で設定できる場合には強制すればいいのですが、手元にあるデータだとそうもいきません。
そこで、今回はPythonを用いて空白文字を削除する方法を紹介したいと思います。
環境
macOS Big Sur バージョン11.5.2
python 3.7.10
サンプルデータ
タブ、全角半角スペース、入力前の謎のスペース色々なパターンの入力を想定してみました。
sample_list = ["山本 大地", "坂本 卓郎", "鈴木 美奈子", " 高田栄作", "国枝 正樹"]
# 結果
['山本 大地', '坂本 卓郎', '鈴木\u3000美奈子', '\u3000高田栄作', '国枝 正樹']
(サンプルデータの人名は実在の人物とは関係ありません。)
split()で空白(半角/全角)、スペース、タブを削除する
まず思いつくのが組み込み関数str.split()
を使うことです。
[''.join(name.split()) for name in sample_list]
# 結果
['山本大地', '坂本卓郎', '鈴木美奈子', '高田栄作', '国枝正樹']
split()で区切り文字無しで分割した後にjoinでくっつけるということを行なっています。
正規表現の利用して空白(半角/全角)、スペース、タブを削除する
正規表現であれば他の言語でも似たような動作をすると思うのでこちらも紹介しておきます。
re
モジュールを利用します。
import re
[re.sub("[\u3000 \t]", "", name) for name in sample_list]
# 結果
['山本大地', '坂本卓郎', '鈴木美奈子', '高田栄作', '国枝正樹']
replace()を利用して空白(半角/全角)、スペース、タブを削除する
最初検索した時に見つけたページを参考に書いたものです。
こちらはstr.replace()
を利用しております。求めていた処理はできるのですが、上記と比べるとかなりみっともない出来ですので、上のものをご利用ください。
import pandas as pd
result_list = pd.Series(sample_list).str.replace("[\u3000 \t]", "", regex=True)
list(result_list)
# 結果
['山本大地', '坂本卓郎', '鈴木美奈子', '高田栄作', '国枝正樹']
最後に
Pythonで空白(半角/全角)、スペース、タブを削除する方法を紹介しました。
自動化する際には、スペースなどが人によって違いがあるとかなり手こずることも多いと思うので、こういった地味な処理も大事にしていきたいです。
この記事は以下の情報を参考にして執筆しました。