2016-05-13 8 views
1

すべての行に、01000000 00001000 00000000 11111111のようなバイナリ文字列と、そのバイナリ文字列に対応するバイナリ文字列の後に2つのスペースがある0または1の数字が含まれています。
01000000 00001000 00000000 11111111 0Pythonはファイルから2つの別々のリストに分割します

私は、この出力に私のプログラムたい:
['01000000', '00001000', '00000000', '11111111'] ['0']

これが今の私のコードです:

def main(): 
f=open('file.txt', 'r').readlines() 
for line in f: 
    words = line.split(" ", 1) 
    wordsList=list(words) 
    for i in range(0, len(wordsList)-1): 
     binary = wordsList[i:i+1] 
     link = wordsList[i+1:i+2] 
     print(binary) 
     print(link) 
main() 

今、ときに私をですから、例えばラインは次のようになりますそれを実行すると、プログラムはこれを返します:
['01000000 00001000 00000000 1111111'] ['0']

私はここで何が欠けていますか?

+0

だけで、私たちは実際のバイナリデータ、0と1の単なる文字列表現について話されていない明確にします? –

+0

'.split()'は 'wordsList = list(words)'の必要がないリストを返します。 'binary = words [0]'と 'link = words [1]'を持つことができます。その文字列を個々のバイナリ文字列に分割したい場合は、 'print(binary.split(" "))'を実行します。 – Tony

答えて

1

行全体を分割し、最後の数をスライスする必要があります。

回線を分割するには、line.split()を使用します。デフォルトのパラメータは正常に動作します。

結果の配列をスライスするには、line[:-1]はすべての要素を最後の要素まで含めます。 line[-1:]最終要素をつかむ。

サンプルプログラム:

def main(): 
    with open('file.txt') as f: 
     for line in f: 
      line = line.split() 
      binary = line[:-1] 
      link = line[-1:] 
      print(binary) 
      print(link) 

if __name__ == "__main__": 
    main() 
+0

うわー、今私は愚かだと感じる..ありがとう! – Matt

+0

レスポンスを書いたとき、私はあなたを馬鹿だとは思わなかった。あなたは、問題を見ている目の新鮮なペアが必要でした。あなた自身を打ち負かさないでください。 –

関連する問題