Python の文字列から印刷不可能な文字を削除する
Perl とは対照的に、Python には POSIX 正規表現クラスがないため、検出が困難です正規表現を使用して印刷不可能な文字を削除します。
では、どうすればこれを実現できますか? Python?
1 つのアプローチは、unicodedata モジュールを活用することです。 unicodedata.category 関数は、Unicode 文字をさまざまなカテゴリに分類します。たとえば、Cc (制御) として分類される文字は、印刷不可能な文字を表します。
この知識を使用して、すべての制御文字に一致するカスタム文字クラスを構築できます:
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)
この関数は、入力文字列から印刷不可能な ASCII 文字をすべて効果的に削除します。
代わりに、Python の組み込み string.printable メソッドを使用することもできます。印刷不可能な文字を除外します。ただし、この方法では Unicode 文字が除外されるため、すべてのユースケースに適しているとは限りません。
Unicode 文字を処理するには、次のように正規表現内の文字クラスを展開できます。
control_chars = ''.join(map(chr, itertools.chain(range(0x00,0x20), range(0x7f,0xa0))))
この拡張文字クラスには、基本的な制御文字と、一般的な印刷不可能な Unicode 文字が含まれています。 ASCII と Unicode の両方の印刷不可能な文字。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3