2016-10-11 70 views
0

當我使用Python套接字程序,我們給像一個選項:如何將具有特殊控制字符的字符串(如'x1b')轉換爲標準字符串?

1) Input A to show your name 
2) Input B to show your age 
3) Input other to set your name 

>> 

當客戶端類型的「太」 +刪除鍵+「M」,服務器接收「太\ x1bm」。

如何在Python中將'Too \ x1bm'轉換爲'Tom'?

還可能有其他控制字符,如「移動光標」和「選項卡」。

+0

這是Python2?我在Python2和Python3中都沒有問題。我在Mac上。 –

+1

你用什麼函數捕獲輸入?在Python2上使用'input()'或'raw_input()'應該處理退格,遊標鍵等等。 – user3030010

+0

'\ x1b'是https://en.wikipedia.org/wiki/ANSI_escape_code的開始 - 您需要編寫一個函數來解析您的客戶端程序可以生成的任何一個函數。 –

回答

0

如果您知道所有'錯誤的字符',您可以使用.replace刪除不需要的部分。

'Too\x1bm'.replace(a[a.index('\x1b')-1:a.index('\x1b')+1],'') 
returns >>> Tom 
+0

服務器得到'Too \ x1bm'not To \ x1bm' – ibuler

+0

我已經修復它以刪除'\ x1b'和之前的字符。 – Whud

0

我的第一個猜測是:

line = 'Too\x1bm' 

if '\x1b' in line: 
    while True: 
     index = line.find('\x1b') 
     if index > 0: 
      line = line[:index - 1] + line[index + 1:] 
     else: 
      break 

    line = line.replace('\x1b', '') 
+0

有沒有圖書館來做到這一點? – ibuler

+0

Windows'delete'是'\ x1b' – ibuler

+0

Mac'delete'是'\ x7f' – ibuler

相關問題