Python では、非 ASCII 文字をスペースに置き換えるのは簡単な作業ではありません。非 ASCII 文字を削除するためのソリューションは多数ありますが、置換は依然として一般的な要件ではありません。
提供されている関数、remove_non_ascii_1 は、すべての非 ASCII 文字を効果的に削除します。一方、remove_non_ascii_2 は非 ASCII 文字をスペースに置き換えますが、スペースの数は文字のコード ポイント サイズに対応します。
ここで、中心的な質問に答えましょう:
すべての非 ASCII 文字を 1 つのスペースに置き換えるにはどうすればよいですか?
解決策 1:
<code class="python">def replace_with_space(text): return ''.join([i if ord(i) < 128 else ' ' for i in text])</code>
このアプローチでは、 ''.join() のリスト内包。 ASCII 値が 128 未満の文字は変更されませんが、非 ASCII 値はスペースに置き換えられます。
解決策 2:
<code class="python">import re def replace_with_space(text): return re.sub(r'[^\x00-\x7F]+', ' ', text)</code>
この解決策では、文字はスペースに置き換えられます。正規表現で、連続する非 ASCII 文字が単一のスペースに置き換えられるようにします。これにより、remove_non_ascii_2 で複数のスペースが挿入される問題が解消されます。
以上がPython で非 ASCII 文字を単一のスペースに置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。