Python 文字列内の ANSI エスケープ シーケンスの削除
多くのコマンドライン ツールと SSH アプリケーションは、端末の動作を制御するために出力に ANSI エスケープ シーケンスを追加します。視覚的なプレゼンテーションを強化します。ただし、視覚的な手がかりなしで文字列コンテンツを解析または処理する場合、これらのシーケンスは面倒になる可能性があります。この記事では、このようなエスケープ シーケンスを削除し、プレーンテキストのコンテンツを抽出する Python のアプローチについて説明します。
問題:
SSH コマンドから取得された次の文字列の例を考えてみましょう:
'ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m'
目的は、ANSI エスケープ シーケンスをプログラムで削除し、平文のみを残すことです。内容:
'examplefile.zip'
解決策:
Python の正規表現モジュールは、この問題に対する簡潔な解決策を提供します。次の正規表現は、すべての ANSI エスケープ シーケンスを効果的にキャプチャして削除します:
import re ansi_escape = re.compile(r''' \x1B # ESC (?: # 7-bit C1 Fe (except CSI) [@-Z\-_] | # or [ for CSI, followed by a control sequence \[ [0-?]* # Parameter bytes [ -/]* # Intermediate bytes [@-~] # Final byte ) ''', re.VERBOSE)
正規表現を適用して目的のテキストを抽出するには:
import re ansi_escape = re.compile(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])') sometext = 'ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m' result = ansi_escape.sub('', sometext)
出力:
'ls\r\nexamplefile.zip\r\n'
以上がPython 文字列から ANSI エスケープ シーケンスを削除するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。