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:
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!