2016-05-13 67 views
1

我读在每一行中包含一个二进制串,像01000000 00001000 00000000 11111111一个文件,和一个数字,0或1,对应于该二进制串的二进制串后两个空间。因此,一个示例行的样子:
01000000 00001000 00000000 11111111 0Python的分割线从文件分成两个单独的列表

我想我的程序输出这样的:
['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

当我写回应时,我并不认为你是愚蠢的。你只需要一双新的眼睛来看问题。不要打垮自己。 –