Python:跟踪文本文件中的当前列

时间:2012-06-03 13:26:11

标签: python file loops

Python初学者。 我正在逐列遍历文本文件。

for line in Input:
    line = line.rstrip() 
    fields = line.split("\t")   
    for col in fields[5:]:

当我遍历列时,如何跟踪我所在的列?我想在输出中打印当前相关列,所以当我得到结果时,我知道结果所指的列。 这似乎是一个有明显答案的东西,但我不知道!

提前感谢您的帮助。我发现这里人们的乐于助人。

一些输入/输出示例:

输入文件中的

行:

 chr20   1032    .       A     1/1 1/1 1/1 0/1 0/0
 chr20   1326    .       T     1/1 1/1 1/1 0/1 0/0
 chr20   1388    .       C     0/0 1/1 ./. 0/1 0/0

然后我通过这些行查看第5列,例如1 / 1,1 / 1,0 / 0并计算一些输出统计数据。我的输出文件包含使用第5列计算的每x行数的统计信息。 我希望我的输出文件还包括第6列,第7列等的结果以及输出文件中的行,以告诉我数据的计算列。实质上是为了节省我为每一列单独重新运行脚本。

输出示例:

5   chr1    230344070   231345012   1000942 200720  66560   119841  7160    5.63775088385   94.3622491161
5   chr1    231345012   232345029   1000017 167920  55040   106160  3360    3.06793279766   96.9320672023
5   chr1    232345029   233345195   1000166 179280  64841   96079   9180    8.72134449311   91.2786555069

这里的第一列引用的事实是根据第5栏中的值计算的

表示index,col表示枚举(fields [5:]):

最佳,

Rubal

2 个答案:

答案 0 :(得分:4)

你可以试试这样的事情

for i,col in enumerate(fields[5:], 5):
    ....

enumerate()将为您生成一个索引值,默认情况下以0 开头,除非将起始值指定为enumerate()的第二个参数,如上图5所示。

变量i将以值5开头,并允许您跟踪当前正在处理的列以及col(如前所述)该列中字段的值。

或者,为了方便和更容易修改,您可以使用变量:

start_col = 5
for i,col in enumerate(fields[start_col:], start_col):
    ....

---更新回复以下评论

我仍然不太确定我理解你的评论,但是如果你发布的循环在一个更大的循环中,你可以像这样跟踪你当前的列:

cur_column = 5
for line in Input:
    line = line.rstrip() 
    fields = line.split("\t")   
    for col in fields[cur_colum:]:
       ...
       ...

cur_column += 1 # done processing current column, increment value to next column

如果您的代码太大而无法发布,那么发布一些简单的输入/输出示例会有所帮助。没有更多信息,很难真正知道如何提供帮助。我希望这有用。

答案 1 :(得分:1)

您可以使用内置功能enumerate

for index, col in enumerate(fields[5:]):