ホームページ >バックエンド開発 >Python チュートリアル >スペースとピリオドを保持したまま非 ASCII 文字を選択的に削除するにはどうすればよいですか?
非 ASCII 文字の選択的削除
テキスト データを操作する場合、多くの場合、特定の記号を保持しながら非 ASCII 文字を削除する必要があります。スペースやピリオドなど。基本的なフィルタリング方法ではすべての非 ASCII 文字を削除できますが、場合によってはこれが望ましくない可能性があります。
次のコードを考えてみましょう:
<code class="python">def onlyascii(char): if ord(char) < 48 or ord(char) > 127: return '' else: return char</code>
このコードは、ASCII 値を持つすべての文字を削除します。 48 未満または 127 を超え、非 ASCII 文字のテキストが効果的に削除されます。ただし、スペース (ASCII 32) とピリオド (ASCII 46) も削除されます。
スペースとピリオドを保持しながら非 ASCII 文字を選択的に削除するには、Python の string.printable モジュールを利用できます。
<code class="python">import string printable = set(string.printable) filtered_data = filter(lambda x: x in printable, data)</code>
string.printable セットには、数字、文字、記号、スペース、ピリオドなど、システム上で印刷可能なすべての文字が含まれます。このセットをフィルターとして使用すると、文字列からすべての印刷不可能な文字を削除できます。
たとえば、文字列「somex00string.withx15 funkycharacters」がある場合:
<code class="python">s = "some\x00string. with\x15 funny characters" ''.join(filter(lambda x: x in printable, s))</code>
結果は次のようになります。
'somestring. with funny characters'
このメソッドは、スペースとピリオドを保持しながら非 ASCII 文字を効果的に削除し、その後の処理に使用できるクリーンな文字列を提供します。
以上がスペースとピリオドを保持したまま非 ASCII 文字を選択的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。