2016-06-07 5 views
0

Ich versuche, eine Bank zu machen, aber ich bin nicht in der Lage, die Integer-Daten der Datei zu ändern. Was meine Datei enthält, ist:Wie manipulieren Integer-Daten in CSV?

astle,hello,11 

monish,mr7,0 

Jetzt in meinem ‚Auswahl1‘ (später im Code zeigen), wenn ich versuche, 100 sagen annehmen zu deponieren, ist es nicht der Wert stattdessen ändern, um die gleiche value.Like gibt in In diesem Fall, wenn ich meinen Benutzernamen als 'astle' eingeben und versuchen, 100 einzahlen, wird der Wert 100 und nicht 111.Ich will 111, als wenn Sie es einzahlen, sollte alter Wert + newvalue sein.
Ich habe den folgenden Code versucht, aber ohne Erfolg.

Dies ist mein Code:

import csv 
run=True 
while run==True: 
    print "1) Deposit money" 
    choice=input("Enter your choice over here: ") 
    #This part takes the input from the user and then stores it in 'store.txt' 
    if choice==1: 
     b=raw_input("Enter the username: ") 
     with open('store.txt','r') as f: 
      reader = list(csv.reader(f)) 
      for row in reader: 
       if b==row[0]: #Check the username with the file 
        c=input("Enter your new ammount") 
        print row[2],"Old value" 
        a=int(row[2]) 
        print a 
        row[2] = c 
        print row[2],"New value" 
        flag = 1 
        break 
       else: 
        flag=0 
     if flag==0: 
      print "Username does not exist." 

     #Writes the new value in the file 
     with open('store.txt','w') as f: 
      wr = csv.writer(f) 
      for row in reader: 
       wr.writerow(row) 

ich versucht habe Reihe zu ersetzen [2] = c mit der Zeile [2] + = c, aber es gibt mir die folgenden Fehler gibt:

row[2]+=d 
TypeError: cannot concatenate 'str' and 'int' objects 
+1

Ersetzen Sie einfach 'row [2] = c' mit' row [2] + = c'. Aber außer für akademische Zwecke, ist eine CSV-Datei ** nicht ** das richtige Werkzeug hier ;-) –

+0

Ich sehe keinen 'alten Wert + newvalue' Operation in Ihrem Code – baf

+0

@SergeBallesta Ich habe das schon ausprobiert, aber es gibt mir dieser Fehler. TypeError: kann 'str' und 'int' Objekte nicht verketten. –

Antwort

0

Sie müssen den Wert von str in int konvertieren. Versuche dies.

row[2] = str(int(row[2]) + c) 
+0

Gracias! Es hat funktioniert, danke. –

+0

@KrutPatel Gerne helfen. Bitte markieren Sie als Antwort, dass es für Sie funktioniert. :) –