「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python の文字列から印刷不可能な文字を削除するにはどうすればよいですか?

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

2024 年 11 月 9 日に公開
ブラウズ:943

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

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 の両方の印刷不可能な文字。

リリースステートメント この記事は次の場所に転載されています: 1729551315 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3