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

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

Patricia Arquette
リリース: 2024-10-22 06:57:02
オリジナル
402 人が閲覧しました

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

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート