非ASCII文字を1つのスペースに置き換える 質問する

非ASCII文字を1つのスペースに置き換える 質問する

すべての非 ASCII 文字 (\x00-\x7F) をスペースに置き換える必要があります。私が何か見落としているのでなければ、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 つのスペースに置き換えるにはどうすればよいですか?

無数の 似ている それで 質問なし 住所 キャラクター 交換 として 反対した 剥ぎ取りそしてさらに、特定の文字ではないすべての非 ASCII 文字に対応します。

ベストアンサー1

式はフィルタリングされ''.join()ており、ASCII 以外のものはすべて削除されています。代わりに条件式を使用できます。

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

これは文字を 1 つずつ処理し、置き換えられる文字ごとに 1 つのスペースを使用します。

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

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

そこに注意してください+

おすすめ記事