1. ホーム
  2. パイソン

[解決済み】非ASCII文字を半角スペースで置換する方法

2022-04-01 12:03:09

質問

ASCII文字以外をすべてスペースに置き換えたいのですが。Pythonでこれが簡単にできることに驚いています。次の関数は、非ASCII文字をすべて削除します。

def remove_non_ascii_1(text):

    return ''.join(i for i in text if ord(i)<128)

そして、こちらは非ASCII文字を文字コードポイントのバイト数に応じた量の空白に置き換えます(すなわち 文字は3つのスペースに置き換えられます。)

def remove_non_ascii_2(text):

    return re.sub(r'[^\x00-\x7F]',' ', text)

非ASCII文字をすべてスペース1文字に置き換えるにはどうしたらよいですか?

その 千差万別 類似 SO 質問 , なし アドレス 文字 置換 として 反対 ストリップ , さらに、特定の文字ではなく、すべての非アスキー文字に対応します。

解決方法は?

あなたの ''.join() の表現は フィルタリング その代わりに条件式を使うこともできます。

return ''.join([i if ord(i) < 128 else ' ' for i in text])

これは、文字を一つずつ処理するもので、置換された文字ごとに1つのスペースを使用することに変わりはありません。

正規表現では 連続 非ASCII文字をスペースに置き換える。

re.sub(r'[^\x00-\x7F]+',' ', text)

注意 + があります。