Python の文字列から印刷不可能な文字を削除する
Perl とは対照的に、Python には POSIX 正規表現クラスがないため、検出が困難です
では、Python でこれを実現するにはどうすればよいでしょうか?
1 つの方法は、unicodedata モジュールを利用することです。 unicodedata.category 関数は、Unicode 文字をさまざまなカテゴリに分類します。たとえば、Cc (制御) として分類される文字は、印刷不可能な文字を表します。
この知識を使用して、すべての制御文字に一致するカスタム文字クラスを構築できます。
<code class="python">import unicodedata import re import sys all_chars = (chr(i) for i in range(sys.maxunicode)) categories = {'Cc'} control_chars = ''.join(c for c in all_chars if unicodedata.category(c) in categories) control_char_re = re.compile('[%s]' % re.escape(control_chars)) def remove_control_chars(s): return control_char_re.sub('', s)</code>
この関数入力文字列からすべての印刷不可能な ASCII 文字を効果的に除去します。
あるいは、Python の組み込み string.printable メソッドを使用して、印刷不可能な文字を除外することもできます。ただし、この方法では Unicode 文字が除外されるため、すべてのユースケースに適しているとは限りません。
Unicode 文字を処理するには、次のように正規表現内の文字クラスを展開できます。
<code class="python">control_chars = ''.join(map(chr, itertools.chain(range(0x00,0x20), range(0x7f,0xa0))))</code>
この拡張文字クラスには、基本的な制御文字と、一般的な印刷不可能な Unicode 文字が含まれています。
それに応じて、remove_control_chars 関数を変更することで、ASCII と Unicode の両方の印刷不可能な文字を正常に処理できます。
以上がPython の文字列から印刷不可能な文字を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。