すべての非 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)
そこに注意してください+
。