0

我之前问过这个问题并收到了我的答案。现在我需要总结列以打印总数的一行。

*我是 python 新手,我有一个 csv 文件,我需要根据第三个“_”之后的字符选择某些行。

这是 csv 文件中的示例:

header row
date,ttp_ws_sm_001_01, , , , , , , , , , , ,117
date,ttp_ws_sm_001_blank, , , , , , , , , , , ,31
date,ttp_ws_sm_045_01, , , , , , , , , , , ,145
date,ttp_ws_sm_057_blank, , , , , , , , , , , ,98
date,ttpv1_001_, , , , , , , , , , , ,67
date,ttpv1_001_01, , , , , , , , , , , ,67*

这是解决我正在构建的第一个项目的代码:

with open(...) as f:
    rows = csv.reader(f)
    for row in rows:
        t = row[1].split('_')
        if len(t) >= 4 and t[3] == '001':
            print (row[1], row[13])

结果:

('ttp_ws_sm_001_01', '117')
('ttp_ws_sm_001_blank', '31')

我需要做的是添加 117 和 31,这样我就可以只打印总数了。这是我到目前为止所尝试的并获得了一个巨大的列表。

import csv
import sys

total = 0
source = '\\\\file path' 
with open(source + '\filename') as f:
    rows = csv.reader(f)

    for row in rows:
        t = row[1].split('_')
        if len(t) >= 4 and t[3] == '001': 
            for number in range(13):    
                total += int(row[13])
                 print ('Club 001' + '\t' + str(total))
4

1 回答 1

1

由于内部 for 循环,您将所有值相加 13 次。我不确定这是否是故意的。

如果我只是总结这些值,我会做类似的事情:

import csv
import sys
import os

if __name__ == '__main__':
    total = 0
    source = '.'
    with open(os.path.join(source, 'data.csv'), 'r') as f:
        rows = csv.reader(f)
        for row in rows:
            try:
                t = row[1].split('_')
            except IndexError:
                continue
            if len(t) >= 4 and t[3] == '001': 
                total += int(row[13])
    print ('Club 001' + '\t' + str(total))
于 2013-09-19T15:15:47.127 回答