Python의 문자열에서 ANSI 이스케이프 시퀀스 제거
문제:
SSH 명령의 색상 강조에 사용되는 것과 같은 ANSI 이스케이프 시퀀스가 포함된 문자열입니다. 이러한 시퀀스는 프로그램 기능을 방해하므로 기본 텍스트를 얻으려면 이를 제거해야 합니다.
해결책:
프로그램에서 ANSI 이스케이프 시퀀스를 제거하는 효과적인 방법 중 하나 문자열은 정규식을 사용하는 것입니다. Python의 re 모듈은 일치하는 시퀀스를 빈 문자열로 대체할 수 있는 sub() 메서드를 제공합니다.
import re ansi_escape = re.compile(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])') cleaned_string = ansi_escape.sub('', original_string)
이 정규식은 모든 7비트 ANSI C1 이스케이프 시퀀스와 일치합니다. 이스케이프 문자(ESC)로 시작하고 그 뒤에 제어 문자가 오는 2바이트 시퀀스 또는 제어 문자를 나타내는 단일 8비트 바이트를 캡처합니다. 이러한 일치 항목을 빈 문자열로 대체함으로써 sub() 메서드는 ANSI 시퀀스를 효과적으로 제거합니다.
압축 버전:
cleaned_string = re.sub(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])', '', original_string)
예:
다음과 같이 주어진다 문자열:
ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m
위의 정규 표현식을 사용하여 정리된 문자열을 얻습니다.
ls\r\nexamplefile.zip\r\n
추가 참고 사항:
위 내용은 Python의 문자열에서 ANSI 이스케이프 시퀀스를 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!