Heim > Artikel > Backend-Entwicklung > Wie entferne ich ANSI-Escape-Sequenzen aus Python-Strings?
Entfernen von ANSI-Escape-Sequenzen in Python-Strings
Viele Befehlszeilentools und SSH-Anwendungen hängen ANSI-Escape-Sequenzen an ihre Ausgaben an, um das Terminalverhalten zu steuern und die visuelle Präsentation verbessern. Diese Sequenzen können jedoch umständlich sein, wenn Sie den String-Inhalt ohne visuelle Hinweise analysieren oder verarbeiten möchten. In diesem Artikel wird ein pythonischer Ansatz zum Entfernen solcher Escape-Sequenzen und zum Extrahieren des Klartextinhalts untersucht.
Problem:
Betrachten Sie die folgende Beispielzeichenfolge, die von einem SSH-Befehl abgerufen wurde:
'ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m'
Das Ziel besteht darin, die ANSI-Escape-Sequenzen programmgesteuert zu entfernen, so dass nur der Klartext übrig bleibt Inhalt:
'examplefile.zip'
Lösung:
Pythons Modul für reguläre Ausdrücke bietet eine prägnante Lösung für dieses Problem. Der folgende reguläre Ausdruck erfasst und entfernt effektiv alle ANSI-Escape-Sequenzen:
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)
So wenden Sie den regulären Ausdruck an und extrahieren den gewünschten Text:
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)
Ausgabe:
'ls\r\nexamplefile.zip\r\n'
Das obige ist der detaillierte Inhalt vonWie entferne ich ANSI-Escape-Sequenzen aus Python-Strings?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!