ホームページ >バックエンド開発 >Python チュートリアル >Python の文字列から ANSI エスケープ シーケンスを削除する方法
Python の文字列から ANSI エスケープ シーケンスを削除する
問題:
SSH での色の強調表示に使用されるものなど、ANSI エスケープ シーケンスを含む文字列コマンド。これらのシーケンスはプログラムの機能を妨げるため、基になるテキストを取得するには削除する必要があります。
解決策:
ANSI エスケープ シーケンスをプログラムから削除する効果的な方法の 1 つ文字列には正規表現を使用します。 Python の re モジュールには、一致したシーケンスを空の文字列に置き換えることができる sub() メソッドが用意されています。
import re ansi_escape = re.compile(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])') cleaned_string = ansi_escape.sub('', original_string)
この正規表現は、すべての 7 ビット ANSI C1 エスケープ シーケンスに一致します。エスケープ文字 (ESC) で始まり、その後に制御文字が続く 2 バイトのシーケンス、または制御文字を表す単一の 8 ビット バイトのいずれかをキャプチャします。これらの一致を空の文字列に置き換えることにより、sub() メソッドは ANSI シーケンスを効果的に削除します。
圧縮バージョン:
cleaned_string = re.sub(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])', '', original_string)
例:
次の場合string:
ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m
上記の正規表現を使用すると、クリーン化された文字列:
ls\r\nexamplefile.zip\r\n
追加メモ:
以上がPython の文字列から ANSI エスケープ シーケンスを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。