Python の文字列から ANSI エスケープ シーケンスを削除する
Python では、SSH から返された文字列を操作するときに、ANSI エスケープ シーケンスが障害となる可能性があります。コマンド。これらのシーケンスは、書式設定やカーソル制御に使用され、文字列の可読性や機能性を損なう可能性があります。この問題に対処し、必要なテキストを抽出するには、正規表現を使用した解決策を検討してみましょう。
次の Python スニペットは、文字列から ANSI エスケープ シーケンスを削除する方法を示しています。
import re # Regex to capture ANSI C1 escape sequences ansi_escape = re.compile(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])') # Replace escape sequences with an empty string result = ansi_escape.sub('', string_with_ansi_sequences)
ansi_escape正規表現は、7 ビットと 8 ビットの両方の C1 ANSI エスケープ シーケンスを対象としています。エスケープ文字 (x1B) で始まり、その後に制御シーケンス ([@-Z\-_] など) または [ で導入された制御シーケンスが続くシーケンスをキャプチャします。その後、sub() メソッドはすべての一致を空の文字列に置き換え、エスケープ シーケンスを効果的に削除します。
たとえば、次の入力文字列:
'ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m'
は次のように変換されます:
'ls\r\nexamplefile.zip\r\n'
このメソッドを使用すると、ANSI エスケープ シーケンスを削除し、SSH コマンドから返された文字列から目的のテキストを取得して、書式設定を妨げることなくテキストを抽出しました。
以上がPython の文字列から ANSI エスケープ シーケンスを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。