從Python 中的字符串中刪除ANSI 轉義序列
問題:
你有一個包含ANSI 轉義序列的字串,例如SSH 指令中用於顏色突出顯示的字串。這些序列會幹擾程式的功能,您需要刪除它們才能取得底層文字。
解:
從程式中刪除 ANSI 轉義序列的一種有效方法string就是使用正規表示式。 Python 的 re 模組提供了 sub() 方法,可以用空字串替換匹配的序列。
import re ansi_escape = re.compile(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])') cleaned_string = ansi_escape.sub('', original_string)
此正規表示式符合所有 7 位元 ANSI C1 轉義序列。它捕獲以轉義字元 (ESC) 開頭、後跟控製字元的兩位元組序列或表示控製字元的單一 8 位元位元組。透過用空字串替換這些匹配項,sub() 方法可以有效地刪除 ANSI 序列。
壓縮版本:
cleaned_string = re.sub(r'\x1B(?:[@-Z\-_]|\[[0-?]*[ -/]*[@-~])', '', original_string)
範例:
鑑於以下情況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中文網其他相關文章!