S使用分隔符分隔行和列,并将字符串转换为列表,计算文本文件中最后一列的总和,而不使用分隔符

2024-05-18 13:57:48 发布

您现在位置:Python中文网/ 问答频道 /正文

2019-01-01,Cake Fudge,150,1,150
2019-01-01,Cake Fudge,150,3,450
2019-01-01,Death by Chocolate,180,1,180
2019-01-01,Vanilla Double Scoop,80,3,240
2019-01-01,Butterscotch Single Scoop,60,5,300
2019-01-01,Vanilla Single Scoop,50,5,250
2019-01-01,Cake Fudge,150,5,750
2019-01-01,Hot Chocolate Fudge,120,3,360
2019-01-01,Butterscotch Single Scoop,60,5,300
2019-01-01,Chocolate Europa Double Scoop,100,1,100
2019-01-01,Hot Chocolate Fudge,120,2,240
2019-01-01,Caramel Crunch Single Scoop,70,4,280
2019-01-01,Hot Chocolate Fudge,120,2,240
2019-01-01,Hot Chocolate Fudge,120,4,480
2019-01-01,Hot Chocolate Fudge,120,2,240
2019-01-01,Cafe Caramel,160,5,800
2019-01-01,Vanilla Double Scoop,80,2,510

这是数据,我想从文本文件中找到最后一列的总和


Tags: bycafedoublecakesinglefudgehotvanilla
1条回答
网友
1楼 · 发布于 2024-05-18 13:57:48

试试这个:

with open('test.txt') as fp:
    data = [[int(col.strip()) if col.strip().isnumeric() else col.strip() for col in line.split(',')] for line in fp if line.strip()]
res = sum([row[-1] for row in data])

每月计算最后一列的平均值、最小值、最大值和总和

from collections import defaultdict
from datetime import datetime

with open('test.txt') as fp:
    data = [[int(col.strip()) if col.strip().isnumeric() else col.strip() for col in line.split(',')] for line in fp if line.strip()]

d, res = defaultdict(list), {}
for row in data:
    month = datetime.strptime(row[0], '%Y-%m-%d').strftime('%B')
    d[month].append(row[1:])
for key in d:
    values = [x[-1] for x in d[key]]
    res[key] = {'min': min(values), 'max': max(values), 'sum': sum(values), 'avg': sum(values) / len(values)}
print(res)

#{'February': {'avg': 350.0, 'max': 750, 'min': 100, 'sum': 1750}, 'January': {'avg': 261.6666666666667, 'max': 450, 'min': 150, 'sum': 1570},'March': {'avg': 425.0, 'max': 800, 'min': 240, 'sum': 2550}}

相关问题 更多 >

    热门问题