Heim >Backend-Entwicklung >Python-Tutorial >Wie entferne ich ANSI-Escape-Sequenzen aus einem String in Python?

Wie entferne ich ANSI-Escape-Sequenzen aus einem String in Python?

Susan Sarandon
Susan SarandonOriginal
2024-11-28 04:38:11414Durchsuche

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

Entfernen von ANSI-Escape-Sequenzen aus einem String in Python

Problem:

Sie haben ein Zeichenfolge, die ANSI-Escape-Sequenzen enthält, wie sie beispielsweise zur Farbhervorhebung in SSH-Befehlen verwendet werden. Diese Sequenzen beeinträchtigen die Funktionalität Ihres Programms und Sie müssen sie entfernen, um den zugrunde liegenden Text zu erhalten.

Lösung:

Eine effektive Möglichkeit, ANSI-Escape-Sequenzen aus einem zu entfernen string soll einen regulären Ausdruck verwenden. Das re-Modul von Python stellt die sub()-Methode bereit, die die übereinstimmenden Sequenzen durch eine leere Zeichenfolge ersetzen kann.

import re

ansi_escape = re.compile(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])')
cleaned_string = ansi_escape.sub('', original_string)

Dieser reguläre Ausdruck stimmt mit allen 7-Bit-ANSI-C1-Escape-Sequenzen überein. Es erfasst entweder eine Zwei-Byte-Sequenz, die mit einem Escape-Zeichen (ESC) beginnt, gefolgt von einem Steuerzeichen, oder ein einzelnes 8-Bit-Byte, das das Steuerzeichen darstellt. Durch Ersetzen dieser Übereinstimmungen durch eine leere Zeichenfolge entfernt die sub()-Methode effektiv die ANSI-Sequenzen.

Kurzversion:

cleaned_string = re.sub(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])', '', original_string)

Beispiel:

Gegeben sei die folgende Zeichenfolge:

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

Verwenden Sie das Obige Mit einem regulären Ausdruck erhalten Sie die bereinigte Zeichenfolge:

ls\r\nexamplefile.zip\r\n

Zusätzliche Hinweise:

  • Der reguläre Ausdruck deckt alle 7-Bit-ANSI-C1-Escape-Sequenzen ab, aber nicht die 8-Bit-C1-Escape-Sequenz-Öffner.
  • Wenn Sie 8-Bit-Codes verarbeiten müssen, ist ein etwas komplexerer regulärer Ausdruck geeignet erforderlich.
  • Weitere Informationen zu ANSI-Escape-Codes finden Sie in der ANSI-Escape-Codes-Übersicht auf Wikipedia oder im ECMA-48-Standard.

Das obige ist der detaillierte Inhalt vonWie entferne ich ANSI-Escape-Sequenzen aus einem String in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn