我正在尝试为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()是练习的一部分。
谢谢!
枚举数据如何?
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)
| 归档时间: |
|
| 查看次数: |
4551 次 |
| 最近记录: |