如何从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()
添加回答
举报
0/150
提交
取消