剥离数据文件

时间:2019-03-11 22:52:31

标签: python

我有一个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 

5 个答案:

答案 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})