Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk mengalih keluar Urutan Melarikan ANSI daripada String dalam Python?

Bagaimana untuk mengalih keluar Urutan Melarikan ANSI daripada String dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-11-28 04:38:11415semak imbas

How to Remove ANSI Escape Sequences from a String in Python?

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:

  • Ungkapan biasa meliputi semua urutan pelarian ANSI C1 7-bit, tetapi bukan urutan pelarian C1 8-bit pembuka.
  • Jika anda perlu mengendalikan kod 8-bit, ungkapan biasa yang lebih kompleks diperlukan.
  • Untuk mendapatkan maklumat lanjut tentang kod melarikan diri ANSI, rujuk gambaran keseluruhan kod melarikan diri ANSI di Wikipedia atau piawai ECMA-48.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn