2016-05-13 58 views
0

现在我有这个格式的文件:看空项文件的某些列

enter image description here

我需要从5列6中的值进行比较,以我的投入,所以我想通过遍历整个文件(假设文件f已经被实例化):

for line in f: 
     line = line.strip() 
     columns = line.split() 
     if (list[0] == columns[4]): 
      if (list[1] == columns[5]): 
       self.mass = float(columns[13]) + float(columns[14]) 

然而,因为有时第一列具有空条目,我的“列”指数得到由1移过来,我会而是比较第6列和第7列的条目。有没有办法解决这个问题?

谢谢!!!

+1

为什么人们发布文字图像?这比复制/粘贴文本更容易吗? –

+0

要点是你的格式不会告诉我们这些条目是以哪种方式对齐的,所以根据屏幕截图回答你的问题其实很复杂。 –

+0

哦,对不起!我是新手,所以不知道哪种方法更好,再加上粘贴的时候它看起来并没有对齐,所以... –

回答

1

我会假设你的文件实际上是一个制表符分隔的文件,在这种情况下,你可以把这个信号

line = line.strip() 
columns = line.split() 

改变这种

columns = line.split("\t") 

维护元素的数量在该阵列后分裂

如果不是这种情况,那么你可能需要检查你当前所在行的数组长度是为了知道哪个ind exes来比较。

+0

这似乎没有被制表符分隔,并且'列'的长度范围从15-17(除了第一列以外,还有其他条目可以是空的),我不确定如何到达right column :( –

+0

既然如此,其他人可能会知道更好的方法,但是您可能只需检查每行的列数,并使用不同的逻辑来比较基于多长的数组是这样的,虽然这是一个非常冒险的方法,但是如果出现不同数量的列会使处理变得困难,您应该尝试找出这些列是如何分开的,而且应该是您的分隔符。 – Jayson