2016-10-11 8 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'を\ 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

関連する問題