2016-06-09 10 views
0

So habe ich eine Textdatei, die eine Liste von Nummern enthält, die ich eine laufende Summe erstellen möchte. Ich brauche die erste Zahl die zweite Zahl zu addieren und dann die dritte Zahl in den neu geschaffenen zweiten Mehrwert zu schaffen und so weiter ...
So:
Altliste
0,1
0,25
0,35
0,2
0,3
Neue Liste
0,35
0,7
0,9 1,2
Ich habe Probleme beim Hinzufügen einer Nummer zu einer vorherigen Nummer und so weiter

Hier ist, was ich bisher

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) 

Doch es mir diesen Fehler gibt:

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

Was mache ich falsch hier? Ich bin neu zu Python, so würde jede Hilfe sehr geschätzt werden.

+0

Versuchen Sie, Wert zu drucken. Was gibt es dir? – Greg

+0

Ich vermute, Sie wollen 'float (num) für num in value.split()'. –

+0

Es wäre hilfreich, wenn Sie nur die Eingabedatei gepostet haben, sehe ich diese Aussage "wenn" WIDTH "in Zeile"; Es ist schwierig, dies ohne die Anwesenheit Ihrer Daten herauszufinden. – direprobs

Antwort

0

Die Antwort ist richtig in der Fehlermeldung:

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

num einen Wert von ' ' hat, und Sie versuchen, es mit int() auf eine ganze Zahl zu konvertieren. Offensichtlich ist int(' ') problematisch, daher gibt Python einen Fehler aus.

Was dies bedeutet ist, dass Sie einen Fehler in Ihrem Strippen und Teilen haben. Ihr Code legt nahe, dass das Format der Eingabedatei etwas komplexer ist als das, was Sie gesagt haben. Wenn Sie die eigentliche Eingabedatei (mit den Doppelpunkten und whatnot) posten, würde ich gerne helfen, diesen Schritt zu debuggen.

0

Es gibt eine Reihe von Dingen, die falsch sind, so dass es schwer zu verstehen ist, was Sie wollen & was los ist.

Erstens schlage ich vor, dass anstelle von komplizierten Dateioperationen, nur die ersten 5 Zeilen einfügen oder so von Ihrer compiled.txt 'hier als

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) 

So etwas wie das?

0

Der Rest des von Ihnen geposteten Codes ist etwas verworren und es ist schwer herauszufinden, was Sie gerade versuchen, vor allem, da wir nicht die vollständigen Daten haben, mit denen Sie arbeiten. Aber die Antwort auf Ihre spezifische Frage über nur die Zahlen aus einer Datei zu addieren und sie zu einem anderen zu schreiben, ist wie folgt:

Verwandte Themen