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

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

DDD
DDDオリジナル
2024-10-22 06:55:02509ブラウズ

How to Strip Non-Printable Characters from Strings in Python?

Python で文字列から印刷不可能な文字を削除する

Perl では、s/[^[:print:]]// g regex は、文字列からすべての印刷不可能な文字を効果的に削除します。ただし、Python には同等の POSIX 正規表現クラスがないため、同じタスクをどのように実行すればよいのか疑問に思う人もいます。

Unicode を理解する

課題は Unicode 文字の処理にあります。

カスタム文字クラスの構築

これに対処するには、unicodedata を使用してカスタム文字クラスを構築できます。モジュール。 unicodedata.category() 関数は、文字カテゴリに関する洞察を提供します。たとえば、Unicode 文字セットからこれらのカテゴリをフィルタリングして除外することで、制御文字やサロゲート文字などの印刷不可能な文字を表す control_characters という文字クラスを定義できます。

<code class="python">import unicodedata
import re

categories = {'Cc', 'Cf', 'Cs'}  # Include desired categories here
control_chars = ''.join(chr(i) for i in range(sys.maxunicode) if unicodedata.category(chr(i)) in categories)
control_char_re = re.compile('[%s]' % re.escape(control_chars))</code>

このアプローチでは、次のアプローチと比較して効率が向上します。

<code class="python">def remove_control_chars(s):
    return control_char_re.sub('', s)</code>

追加のカスタマイズ

追加のカテゴリ (私用文字など) のフィルタリングが必要なシナリオでは、文字クラスを拡張できます。

<code class="python">categories.add('Co')  # Add private-use characters
# Rebuild the character class and regex</code>

このアプローチを利用すると、Python の Unicode 文字列から印刷不可能な文字を効果的に除去でき、基本的なユースケースとカスタマイズされたユースケースの両方に対応できます。

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

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