我在向前一个号码添加号码时遇到问题,依此类推

时间:2016-06-09 17:07:25

标签: python running-total

所以我有一个文本文件,其中包含我想要创建总计的数字列表。我需要将第一个数字添加到第二个数字,然后将第三个数字添加到新创建的第二个数字,依此类推......
像这样:
旧列表
0.1
0.25
0.35
0.2
0.3
新列表
0.35
0.7
0.9
1.2

这是我到目前为止所拥有的

import itertools
from itertools import zip_longest

open('newfile.txt','w').writelines([ line for line in open("Test1.txt") if "WIDTH" in line])
open('newfile2.txt','w').writelines([ line for line in open("Test1.txt") if "DEPTH" in line])

with open('compiled.txt', 'w') as res, open("newfile.txt") as f1, open("newfile2.txt") as f2:
for line1, line2 in zip_longest(f1, f2, fillvalue=""):
    res.write("{} : {}\n".format(line1.rstrip(), line2.rstrip()))

for line in open("compiled.txt"):
line = line.strip(', \n')
parts = line.split(":")
category = parts[0]
value = parts[1]
category2 = parts[2]
value2 = parts[3]
total = sum([int(num) for num in value])
print (total)

然而它给了我这个错误:

total = sum([int(num) for num in value])
ValueError: invalid literal for int() with base 10: ' '

我在这里做错了什么?我是python的新手,所以任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:0)

答案就在错误信息中:

total = sum([int(num) for num in value])
ValueError: invalid literal for int() with base 10: ' '

num的值为' ',您尝试将其转换为int()的整数。显然int(' ')是有问题的,因此Python会抛出错误。

这意味着您的剥离和拆分存在错误。您的代码表明输入文件格式比您说的要复杂一些。如果您发布实际的输入文件(带冒号和诸如此类的东西),我很乐意帮助您调试该步骤。

答案 1 :(得分:0)

有很多问题,所以很难理解你想要的东西。发生了什么事。

首先,我建议不要复杂的文件操作,只需粘贴你的' compiled.txt'的前5行左右。在这里作为

numbers_string = """ 1 2 
                     3 whatever
                 """
previous_val = 0
for line in numbers_string.splitlines():
    #whatever, I assume you know what you're doing
    line = line.strip(', \n')
    parts = line.split(":")
    category = parts[0]
    value = parts[1]
    category2 = parts[2]
    value2 = parts[3]
    # Calc sum of previous total and current value:
    total = previous_val + int(value)#don't you mean float?
    previous_val= total
    print( total )

这样的东西?

答案 2 :(得分:0)

您发布的其他代码有点令人费解,很难弄清楚您要尝试的是什么,特别是因为我们没有您正在使用的完整数据。但是,关于将一个文件中的数字相加并将其写入另一个文件的具体问题的答案如下:

f = open("old.txt", "r")
lines = f.read().split("\n")
f.close()

total = float(lines[0])
f = open("new.txt", "w")
for line in lines[1:]:
    total += float(line)
    f.write(str(total)+"\n")
f.close()