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
答案 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:]):