2017-07-20 9 views
0

ソケットから受け取った文字列を解釈しようとしています。私は数値を取得するには、次のコードを使用していますソケットから受け取った文字列を解釈する

2 -> 1 

1 -> 2 

2 -> 0 

0 -> 2 

0 -> 2 

1 -> 2 

2 -> 0 

:データの最初のセットは下に見られている

for i in range(0,len(data)-1): 
    if data[i] == "-": 
     n1 = data[i-2] 
     n2 = data[i+3] 
     moves.append([int(n1),int(n2)]) 

しかし、データ内の9が表示され、プログラムより大きい数だけその数の2桁目を取る(例えば、10でプログラムが0になる)。一桁の数字を得る能力を維持しながら、コードから両方の数字を取得するにはどうすればよいですか?

+0

不適切な書式設定について謝罪するのではなく、修正してください。 –

答えて

0

さてあなたはちょうどあなたがこのようにそれを作ることができる第二の値のために、各側に1つの文字。..

をつかむ:データ[I + 3、LEN(データを)-1]最初ため

1:データ[0、I-2]

0

スプリット()関数

numlist = data[i].split('->') 
moves.append([int(numlist[0]),int(numlist[1])]) 
0

を使用し、私は、各ラインがlineという名前の変数に(バイト)の文字列として利用可能であると仮定する。それはラインの全体の束だなら、あなたは

lines = data.splitlines() 

で個々の行に分割し、for文内の各ライン上で動作することができます:

for line in lines: 
    # do something with the line 

あなたが行が常に正しくなります自信を持っている場合あなたが望む値を得る最も簡単な方法をフォーマットしましたstring split method。データから始まるフルコードは、このように読み取られます。

lines = data.splitlines() 
for line in lines: 
    first, _, second = line.split() 
    moves.append([int(first), int(second)])