ホームページ >バックエンド開発 >Python チュートリアル >Python 文字列から印刷不可能な文字を削除するにはどうすればよいですか?

Python 文字列から印刷不可能な文字を削除するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-22 06:58:30412ブラウズ

How to Remove Non-Printable Characters from Python Strings?

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>

拡張オプション:

の場合より包括的な削除では、追加のカテゴリを含めることができますが、パフォーマンスに影響する可能性があります。

文字カテゴリと数:

  • Cc (コントロール): 65
  • Cf (フォーマット): 161
  • Cs (サロゲート): 2048
  • Co (私用): 137468
  • Cn (未割り当て): 836601

以上がPython 文字列から印刷不可能な文字を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。