返回csv模块python中行的索引

时间:2016-02-18 20:03:00

标签: python csv

我试图返回一个特定的字符串,它读出" RowX:[行的总和]"对于ts​​v表的每一行,其中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()

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

AttributeError: '_csv.reader' object has no attribute 'index'

对不起,如果显而易见。我对编码非常陌生,我正在做这个练习的一部分。另外,如果你想知道我为什么不使用sum(),那么它的部分练习就是不使用sum()。

谢谢!

1 个答案:

答案 0 :(得分:6)

enumerating数据怎么样?

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

Python也已经有了sum函数,所以你可以这样做:

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

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

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)))