2012-03-05 20 views
0

我正在尋找一種將非打印字符放入python字符串的方法。正則表達式中的Python和二進制數據

小背景信息:我使用paramiko通過SSH使用Windows命令提示符。然而paramiko不會'解析'/'處理'ANSI終端仿真轉義序列。所以他們出現在我的輸出中,我不想要。所以我需要剝離這些轉義序列。

這些字符串/轉義序列但是以下列方式編碼:Esc[Line;ColumnH

正如你可以猜到。我無法獲取字符串中的esc字節值。它將或者打印爲0x1b27。因此毫無用處。

有沒有人知道如何解決這個問題?提前致謝。

+0

逃生非ASCII字符(用文字代替),做正則表達式的魔力,未越獄? – Kos 2012-03-05 11:56:32

+0

有許多應用程序,設置環境變量TERM = dumb將阻止它們發送ANSI轉義序列。 – 2012-03-05 12:35:42

+0

@PauloScardine可悲的是,這似乎並不奏效。 – 2012-03-06 09:01:17

回答

1

您可以使用正則表達式抑制這些轉義序列:

str_with_ainsi_esc = '\x1b[10;10HSalut' 
print re.sub('\x1b\[\d+;\d+H','',str_with_ainsi_esc) 
+0

啊,這就是你如何將字節字符放入字符串中。謝謝。明天再仔細看看。 (現在的本地時間) – 2012-03-05 16:17:20

+1

因爲列和行的值都是'\ x1b \ [\ d +; \ d + H''到''\ x1b \ [\ d *; \ d * H'根據VT100規範可選。 – 2012-03-06 08:43:33