参考:https://www.cnpython.com/qa/199989
python 中使用paramiko 连接linux 服务器,获取返回中发现字符中包含颜色代码。
\x1b[01;34m 这个应该是表示颜色的,
\x1b[0m 这个是结果样式的标志,代表:关闭所有属性
\x1b是十六进制Esc(ASCII码27)
如何通过正则表达式删除所有IRC颜色控制代码?
def clear_irc_color(self, string):
pattern = r'\x1b(\[.*?[@-~]|\].*?(\x07|\x1b\\))'
return re.sub(pattern, '', string)
效果:
ll
总用量 12
drwxr-xr-x 3 root root 4096 8月 6 2018 ./
drwxr-xr-x 24 root root 4096 9月 13 2018 ../
drwxr-xr-x 18 qcl qcl 4096 5月 3 15:02 qcl/
qcl@qcl-virtual-machine:/home$
['ll\r\n总用量 12\r\ndrwxr-xr-x 3 root root 4096 8月 6 2018 \x1b[0m\x1b[01;34m.\x1b[0m/\r\ndrwxr-xr-x 24 root root 4096 9月 13 2018 \x1b[01;34m..\x1b[0m/\r\ndrwxr-xr-x 18 qcl qcl 4096 5月 3 15:02 \x1b[01;34mqcl\x1b[0m/\r\nqcl@qcl-virtual-machine:/home$ ']
ll
总用量 12
drwxr-xr-x 3 root root 4096 8月 6 2018 ./
drwxr-xr-x 24 root root 4096 9月 13 2018 ../
drwxr-xr-x 18 qcl qcl 4096 5月 3 15:02 qcl/
qcl@qcl-virtual-machine:/home$
['ll\r\n总用量 12\r\ndrwxr-xr-x 3 root root 4096 8月 6 2018 ./\r\ndrwxr-xr-x 24 root root 4096 9月 13 2018 ../\r\ndrwxr-xr-x 18 qcl qcl 4096 5月 3 15:02 qcl/\r\nqcl@qcl-virtual-machine:/home$ ']
D:\qcltest\autotest>
# https://www.itranslater.com/qa/details/2582340788189398016
# 7-bit C1 ANSI sequences
ansi_escape = re.compile(r'''
\x1B # ESC
[@-_] # 7-bit C1 Fe
[0-?]* # Parameter bytes
[ -/]* # Intermediate bytes
[@-~] # Final byte
''', re.VERBOSE)
result = ansi_escape.sub('', sometext)
# 或者,不带VERBOSE标志,以压缩形式:
ansi_escape = re.compile(r'\x1B[@-_][0-?]*[ -/]*[@-~]')
result = ansi_escape.sub('', sometext)