从 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中文网其他相关文章!