Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk mengalih keluar Urutan Escape ANSI dari Rentetan Python?
Melucutkan Urutan Melarikan Diri ANSI dalam Rentetan Python
Banyak alatan baris perintah dan aplikasi SSH menambahkan jujukan pelarian ANSI pada outputnya untuk mengawal gelagat terminal dan meningkatkan persembahan visual. Walau bagaimanapun, urutan ini boleh menyusahkan apabila anda ingin menghuraikan atau memproses kandungan rentetan tanpa isyarat visual. Artikel ini meneroka pendekatan Pythonic untuk mengalih keluar urutan pelarian sedemikian dan mengekstrak kandungan teks biasa.
Masalah:
Pertimbangkan contoh rentetan berikut yang diambil daripada arahan SSH:
'ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m'
Objektifnya adalah untuk mengalih keluar urutan pelarian ANSI secara pemrograman, meninggalkan hanya kandungan plaintext:
'examplefile.zip'
Penyelesaian:
Modul ungkapan biasa Python menyediakan penyelesaian ringkas kepada masalah ini. Ungkapan biasa berikut secara berkesan menangkap dan mengalih keluar semua urutan pelarian 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)
Untuk menggunakan ungkapan biasa dan mengekstrak teks yang diingini:
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)
Output:
'ls\r\nexamplefile.zip\r\n'
Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar Urutan Escape ANSI dari Rentetan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!