Maison > développement back-end > Tutoriel Python > Comment supprimer les séquences d'échappement ANSI des chaînes Python ?

Comment supprimer les séquences d'échappement ANSI des chaînes Python ?

Barbara Streisand
Libérer: 2024-11-23 08:47:11
original
542 Les gens l'ont consulté

How to Remove ANSI Escape Sequences from Python Strings?

Suppression des séquences d'échappement ANSI dans les chaînes Python

De nombreux outils de ligne de commande et applications SSH ajoutent des séquences d'échappement ANSI à leurs sorties pour contrôler le comportement des terminaux et améliorer la présentation visuelle. Cependant, ces séquences peuvent s'avérer fastidieuses lorsque vous souhaitez analyser ou traiter le contenu de la chaîne sans repères visuels. Cet article explore une approche pythonique pour supprimer de telles séquences d'échappement et extraire le contenu en texte brut.

Problème :

Considérez l'exemple de chaîne suivant extrait d'une commande SSH :

'ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m'
Copier après la connexion

L'objectif est de supprimer par programme les séquences d'échappement ANSI, ne laissant que le texte en clair contenu :

'examplefile.zip'
Copier après la connexion

Solution :

Le module d'expression régulière de Python fournit une solution succincte à ce problème. L'expression régulière suivante capture et supprime efficacement toutes les séquences d'échappement 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)
Copier après la connexion

Pour appliquer l'expression régulière et extraire le texte souhaité :

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)
Copier après la connexion

Sortie :

'ls\r\nexamplefile.zip\r\n'
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal