Bagaimana untuk mengalih keluar Urutan Escape ANSI dari Rentetan Python?

Barbara Streisand
Lepaskan: 2024-11-23 08:47:11
asal
426 orang telah melayarinya

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'
Salin selepas log masuk

Objektifnya adalah untuk mengalih keluar urutan pelarian ANSI secara pemrograman, meninggalkan hanya kandungan plaintext:

'examplefile.zip'
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

Output:

'ls\r\nexamplefile.zip\r\n'
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan