Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengalih keluar Urutan Escape ANSI dari Rentetan Python?

Bagaimana untuk mengalih keluar Urutan Escape ANSI dari Rentetan Python?

Barbara Streisand
Barbara Streisandasal
2024-11-23 08:47:11427semak imbas

How to Remove ANSI Escape Sequences from Python Strings?

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!

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