我有一个txt文件,其中包含我需要在python文件中打开的数据并执行计算。数据文件的示例如下:
1,22/01/2019,30
2,22/01/2019,40
3,22/01/2019,350
1,23/01/2019,45
2,25/01/2019,10
4,26/01/2019,750
2,29/01/2019,15
1,31/01/2019,50
我需要创建一个代码,该代码将每行的结尾数添加在一起,以第一行开始(例如,它需要添加30、45等),我尝试使用str.Strip,并且没有一直在锻炼,请帮助!
我尝试的代码是
with open('events.txt') as fn:
content = fn.readlines()
for line in content:
if(line.startswith('1')):
priceUnit=int(str.strip([0:13]))
您可能应该使用split()
:
with open('file.txt', 'r') as f:
lines = f.readlines()
total = 0
for line in lines:
if str(line).startswith('1'):
total += int(line.split(',')[-1])
unitList = []
total = 0
for line in content:
values = line.split(",")
unitList.append(values[2])
for i in values:
total = total + i
print(total)
with open('events.txt') as fn:
content = fn.readlines()
final_price = 0
for line in content:
line = line.strip().split(",")
if line[0]=="1":
priceUnit = int(line[2])
final_price+=priceUnit
使用上下文管理器阅读时,。一切都是字符串作为数据类型。并且每行均由" n"隔开。因此,同时使用strip()和split()方法。
将其保存为CSV,因为它已经由逗号界定(从字面上用.CSV重命名为文件)。然后使用Pandas打开它,然后根据第一列中的值1获取行,然后在最后一列中添加所有数字。
import pandas as pd
# originally data.txt
df = pd.read_csv('data.csv', header=None)
0 1 2
-----------------------
0 1 22/01/2019 30
1 2 22/01/2019 40
2 3 22/01/2019 350
3 1 23/01/2019 45
4 2 25/01/2019 10
5 4 26/01/2019 750
6 2 29/01/2019 15
7 1 31/01/2019 50
df1 = df.loc[df[0] == 1]
df1
0 1 2
0 1 22/01/2019 30
3 1 23/01/2019 45
7 1 31/01/2019 50
total = df1[2].sum()
total
>>> 125
使用collections
中使用defaultdict
您可以创建一个字典并基于键
from collections import defaultdict
d = defaultdict(int)
with open("input.csv") as f:
for line in f:
line = line.split(",")
d[line[0]] += int(line[2])
哪个输出每个键的添加值
的添加值defaultdict(int, {'1': 125, '2': 65, '3': 350, '4': 750})