Python の文字列から印刷不可能な文字を削除する
質問:
Perl では、印刷不可能な文字は、正規表現 s/[^[:print:]]//g を使用して削除できます。ただし、Python では、[:print:] クラスはサポートされていません。 ASCII 文字と Unicode 文字の両方を処理する同様の機能を Python でどのように実現できますか?
答え:
印刷可能性の検出における Python の制限により、独自の文字を構築できます。 unicodedata モジュールを使用したクラス。
<code class="python">import unicodedata, re, itertools, sys # Generate a list of all characters all_chars = (chr(i) for i in range(sys.maxunicode)) # Category of control characters categories = {'Cc'} control_chars = ''.join(c for c in all_chars if unicodedata.category(c) in categories) # Escape the control characters for regular expression matching control_char_re = re.compile('[%s]' % re.escape(control_chars)) # Function to remove control characters from a string def remove_control_chars(s): return control_char_re.sub('', s)</code>
Python 2 の場合:
<code class="python">import unicodedata, re, sys # Generate a list of all characters all_chars = (unichr(i) for i in xrange(sys.maxunicode)) # Category of control characters categories = {'Cc'} control_chars = ''.join(c for c in all_chars if unicodedata.category(c) in categories) # Escape the control characters for regular expression matching control_char_re = re.compile('[%s]' % re.escape(control_chars)) # Function to remove control characters from a string def remove_control_chars(s): return control_char_re.sub('', s)</code>
拡張オプション:
の場合より包括的な削除では、追加のカテゴリを含めることができますが、パフォーマンスに影響する可能性があります。
文字カテゴリと数:
以上がPython 文字列から印刷不可能な文字を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。