我正在尝试为 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()
到目前为止,我已经尝试用 data.index() 代替“X”,它返回:
AttributeError: '_csv.reader' object has no attribute 'index'
抱歉,如果很明显。我对编码非常陌生,并将其作为练习的一部分。另外,如果您想知道为什么我不只使用 sum(),不使用 sum() 也是练习的一部分。
谢谢!
请您参考如下方法:
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)))
