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

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

Susan Sarandon
Susan Sarandonoriginal
2024-12-06 16:36:15546parcourir

How Can I Remove ANSI Escape Sequences from Strings in Python?

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

Lorsque vous travaillez avec des chaînes obtenues à partir de commandes SSH, vous pouvez rencontrer des séquences d'échappement ANSI qui interfèrent avec le fonctionnement de votre programme. Pour supprimer ces séquences d'échappement et extraire les informations pertinentes de la chaîne, vous pouvez utiliser les techniques suivantes à l'aide du module d'expressions régulières de Python :

Méthode d'expression régulière

Vous pouvez utiliser l'expression régulière suivante pour identifier et supprimer les séquences d'échappement ANSI d'une chaîne :

import re

# 7-bit C1 ANSI sequences
ansi_escape = re.compile(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])')
result = ansi_escape.sub('', sometext)

Cette expression régulière cible à la fois les formats 7 bits et 8 bits. Séquences d'échappement ANSI C1, y compris les codes Control Sequence Introducers (CSI) et Select Graphic Rendition (SGR).

Exemple

Considérez la chaîne suivante avec des séquences d'échappement ANSI :

'ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m'

L'application de l'expression régulière ci-dessus supprimera les séquences d'échappement, vous laissant avec :

ls\r\nexamplefile.zip\r\n

Explication de l'expression régulière

  • x1B : correspond au code ASCII du caractère d'échappement (ESC).
  • [@-Z\-_] : correspond aux séquences d'échappement C1 7 bits qui ne sont pas CSI.
  • [[0-?]*[ -/]*[@-~] : correspond aux séquences d'échappement CSI.
  • `?* : correspond à zéro ou plusieurs occurrences de l'élément précédent. .
  • .* : correspond à tous les caractères qui viennent après la séquence d'échappement.

En faisant correspondre et en supprimant ces séquences d'échappement, vous pouvez extraire efficacement le texte souhaité de la chaîne.

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!

Déclaration:
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