为了账号安全,请及时绑定邮箱和手机立即绑定

如何从python中的字符串中删除ANSI转义序列

如何从python中的字符串中删除ANSI转义序列

蝴蝶不菲 2019-07-30 17:38:41
如何从python中的字符串中删除ANSI转义序列这是我的字符串:'ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m'我正在使用代码从SSH命令检索输出,我希望我的字符串只包含'examplefile.zip'我可以用什么来删除额外的转义序列?
查看完整描述

3 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

功能

基于的Martijn Pieters的♦的回答杰夫的正则表达式

def escape_ansi(line):
    ansi_escape = re.compile(r'(?:\x1B[@-_]|[\x80-\x9F])[0-?]*[ -/]*[@-~]')
    return ansi_escape.sub('', line)

测试

def test_remove_ansi_escape_sequence(self):
    line = '\t\u001b[0;35mBlabla\u001b[0m                                  \u001b[0;36m172.18.0.2\u001b[0m'

    escaped_line = escape_ansi(line)

    self.assertEqual(escaped_line, '\tBlabla                                  172.18.0.2')

测试

如果你想自己运行它,使用python3(更好的unicode支持,blablabla)。以下是测试文件的格式:

import unittestimport redef escape_ansi(line):
    …class TestStringMethods(unittest.TestCase):
    def test_remove_ansi_escape_sequence(self):
    …if __name__ == '__main__':
    unittest.main()


查看完整回答
1 反对 回复 2019-07-30
  • 3 回答
  • 0 关注
  • 1595 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信