如何從python中的字符串中刪除ANSI轉(zhuǎn)義序列這是我的字符串:'ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m'我正在使用代碼從SSH命令檢索輸出,我希望我的字符串只包含'examplefile.zip'我可以用什么來刪除額外的轉(zhuǎn)義序列?
3 回答

函數(shù)式編程
TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
功能
基于的Martijn Pieters的?的回答與杰夫的正則表達(dá)式。
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')
測試
如果你想自己運(yùn)行它,使用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()
添加回答
舉報(bào)
0/150
提交
取消