使用Python处理文件-打印每日价值总和

时间:2018-08-28 07:42:32

标签: python python-3.x file-handling

我需要编写一个函数print_daily_totals(filename),该函数将此类文件的名称作为参数并从文件中读取数据,并以下面给出的格式打印每天的读数总计。

天数的打印顺序应与输入文件中的顺序相同。

对于输入文件中的每一行,我应该以date = total格式打印输出行,将total赋予2个小数位。例如,使用上面的简单2行输入文件,输出将是:

2010-01-01 = 30.00
2010-01-02 = 115.30

文件包含:

2006-04-10,836.2,563.263
2006-04-11,462.06,1694.3,666.0
2006-04-12,1318.19,1485.62

通话说明将为

 print_daily_totals('data.txt')
     

预期输出必须为:

 2006-04-10 = 1399.46
 2006-04-11 = 2822.36
 2006-04-12 = 2803.81

我仍在开始使用Python处理文件。因此,我们将不胜感激。

3 个答案:

答案 0 :(得分:2)

您可以使用此功能:

def print_daily_totals(ff):
    with open(ff) as f:
        for line in f.readlines():
            line_arr = line.split(',')
            result = sum([float(amnt.strip()) for amnt in line_arr[1:]])
            print(line_arr[0]+" = "+ str(result))

答案 1 :(得分:1)

这是一种方法。

def print_daily_totals(filename):
    with open(filename) as infile:            #Open file for read
        for line in infile:                   #Iterate each line
            val = line.strip().split(",")     #split line by comma
            print("{} = {}".format(val[0], sum(map(float, val[1:]))))

print_daily_totals('data.txt')

输出:

2006-04-10 = 1399.463
2006-04-11 = 2822.36
2006-04-12 = 2803.81

答案 2 :(得分:0)

我认为该代码段可以完成此任务:

def print_daily_totals(file_path):
    f = open(file_path)
    for line in f:
        values = line.split(',')
        date = values.pop(0)
        total = sum(float(val) for val in values)
        print(date, '=', "{:.2f}".format(total))