我有一个txt文件,其中包含我需要在python文件中打开并进行计算的数据。数据文件的示例如下:
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
createStore(
rootReducer,
composeEnhancers(
/* other stuff... */
)
);
我需要创建一个代码,该代码将以数字开头的每一行的结尾数字加在一起(例如,它需要加上30、45等),我尝试使用str.strip,但没有一直在努力,请帮忙!
我尝试的代码是
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
答案 0 :(得分:5)
您可能应该改用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])
答案 1 :(得分:0)
unitList = []
total = 0
for line in content:
values = line.split(",")
unitList.append(values[2])
for i in values:
total = total + i
print(total)
答案 2 :(得分:0)
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()方法。
答案 3 :(得分:0)
将其另存为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
答案 4 :(得分:0)
使用defaultdict
中的collections
,您可以创建字典并根据键添加值
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})