返回csv模块python中行的索引

AML*_*AML 1 python csv

我正在尝试为tsv表的每一行返回一个特定的字符串,该字符串读出“ RowX:[行的总和]”,其中X =行号(索引+1)。到目前为止,除了行号之外,我都能使所有工作正常。

我的代码:

#!/usr/bin/env python

from __future__ import division, print_function

import sys
import csv



def my_sum(row):
    a = 0
    for i in row:
    a = a + float(i)
    return a

def main():
    tsvfile_input = sys.argv[1]
    data = csv.reader(open(tsvfile_input), delimiter = '\t')

    for row in data:
        RowSum = my_sum(row)
        print('Row' + 'X' + ': ' + str(RowSum))




if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试了data.index()来代替'X',它返回:

AttributeError: '_csv.reader' object has no attribute 'index'
Run Code Online (Sandbox Code Playgroud)

抱歉,如果很明显。我对编码非常陌生,并且是练习的一部分。另外,如果您想知道为什么我不只是使用sum(),则不使用sum()是练习的一部分。

谢谢!

Reu*_*ani 6

枚举数据如何?

for index, row in enumerate(data):
    RowSum = my_sum(row)
    print('Row %d: %f' % (index + 1, rowSum))
Run Code Online (Sandbox Code Playgroud)

Python也已经具有sum函数,因此您可以执行以下操作:

for index, row in enumerate(data):
    print('Row %d: %f' % (index + 1, sum(float(num) for num in row)))
Run Code Online (Sandbox Code Playgroud)

编辑(主要功能的完整示例):

def main():
    tsvfile_input = sys.argv[1]
    data = csv.reader(open(tsvfile_input), delimiter = '\t')
    for index, row in enumerate(data):
        print('Row %d: %f' % (index + 1, sum(float(num) for num in row)))
Run Code Online (Sandbox Code Playgroud)