Mengalih keluar Urutan Melarikan Diri ANSI daripada Rentetan dalam Python
Masalah:
Anda mempunyai rentetan yang mengandungi urutan pelarian ANSI, seperti yang digunakan untuk penonjolan warna dalam arahan SSH. Jujukan ini mengganggu kefungsian program anda dan anda perlu mengalih keluarnya untuk mendapatkan teks asas.
Penyelesaian:
Satu cara berkesan untuk mengalih keluar jujukan pelarian ANSI daripada rentetan adalah menggunakan ungkapan biasa. Modul semula Python menyediakan kaedah sub(), yang boleh menggantikan urutan yang dipadankan dengan rentetan kosong.
import re ansi_escape = re.compile(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])') cleaned_string = ansi_escape.sub('', original_string)
Ungkapan biasa ini sepadan dengan semua jujukan pelarian ANSI C1 7-bit. Ia menangkap sama ada jujukan dua bait bermula dengan aksara melarikan diri (ESC) diikuti dengan aksara kawalan atau bait 8-bit tunggal yang mewakili aksara kawalan. Dengan menggantikan padanan ini dengan rentetan kosong, kaedah sub() mengalih keluar urutan ANSI dengan berkesan.
Versi Terkondensasi:
cleaned_string = re.sub(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])', '', original_string)
Contoh:
Memandangkan perkara berikut rentetan:
ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m
Menggunakan ungkapan biasa di atas, anda memperoleh rentetan yang dibersihkan:
ls\r\nexamplefile.zip\r\n
Nota Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar Urutan Melarikan ANSI daripada String dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!