2017-03-03 5 views
0

Ich bin mir ziemlich sicher, die Lösung ist einfach, aber irgendwie funktioniert der übliche Float nicht.Kann nicht konvertieren eine Zeichenfolge mit Float - Python 3

output = open('output.txt', 'wt') 
with open('input.txt', 'r') as file: 
    file = file.readlines() 
    for x in range(0,len(file)): 
     if file[x][0:6] == 'NUMBER': 
      print(file[x][11:18]) 
      float(file[x][11:18]) 

Druck mir geben wird ‚11111‘, aber Schwimmer gibt mir Fehler Valueerror: string nicht konvertieren konnte zu schweben: Was hier geschieht. Ich brauche es als Float, um eine mathematische Operation durchzuführen.

Aktualisierung. Ich schätze, weil ich versuche, einen leeren Raum zu konvertieren. Die erste Zeile verursacht diesen Fehler. float ('') gibt einen Fehler.

NUMBER 
* 
NUMBER 111111111111111111111 
+0

Welche Sprache ist das? Bitte markieren Sie es –

+0

Danke Typ. Entschuldigung, mein erster Beitrag. – kacangputih

+0

Die Fehlermeldung auf meinem Python enthält die 'repr' der Zeichenfolge, die nicht konvertiert werden konnte. Wenn das nicht gedruckt wird, versuchen Sie 'print (repr (file [x] [11:18]))' zu sehen, um 'repr' zu sehen. Möglicherweise ist ein nicht druckbares Zeichen (z. B. "\ 0") in die Zeichenfolge eingebettet. 'float' ignoriert führende und nachfolgende Leerzeichen, aber keinen beliebigen nicht-numerischen Text oder eingebettete Leerzeichen. – ShadowRanger

Antwort

1

Eine Version der Idee, dass @Bijoy in den Kommentaren haben: Wenn das Problem ist, dass die Zeichenfolge, die 'NUMBER' folgt, ist manchmal leer und solche Fälle sollten Karte immer mit dem Schwimmer 0.0, können Sie Fehler Trapping schreib eine Spezial-Version von float():

def getfloat(s): 
    try: 
     return float(s) 
    except ValueError: 
     return 0.0 

Dies wird für Ihre Situation arbeiten, obwohl hat das Gegen intuitives Verhalten, bei dem zB getfloat("hello world") == 0.0

+0

Danke. Das ist was ich suche. – kacangputih

Verwandte Themen