Seite 1 von 1

invalid literal for float():

Verfasst: Freitag 20. Juli 2007, 12:24
von monocult
Hallo,

ich versuche mir wie folgt die Stock Daten von yahoo zu holen.

Code: Alles auswählen

import urllib2
import csv, string

def getsource(url):
    opener = urllib2.build_opener()
    opener.addheaders = [('User-agent', 'Mozilla/5.0')]
    htmlSource = opener.open(url)
    htmlSource = htmlSource.read()
    return string.strip(htmlSource)

symbol = "H9Y.DE"
historyurl = "http://ichart.yahoo.com/table.csv?s=%s&d=6&e=20&f=2007&g=d&a=0&b=14&c=2000&ignore=.csv" % (symbol)
rowlist = getsource(historyurl).split("\n")

reader = csv.reader(rowlist,delimiter = ',')
yesterday = 0
for Date, Open, High, Low, Close, Volume, AdjClose, in reader:
    
    print float(Close)
doch leider scheitert die Umwandlung des strings in einen float Wert. Muss ich da noch die Codierung beachten oder ähnliches?

Code: Alles auswählen

ValueError: invalid literal for float(): Close

Verfasst: Freitag 20. Juli 2007, 12:29
von EyDu
Schau dir doch noch mal die Fehlermeldung genauer an. Du versuchst den String "Close" in einen Float zu wandeln, das kann natürlich nicht funktionieren.

Verfasst: Freitag 20. Juli 2007, 12:36
von monocult
warum nicht der String Close ist z.b "23.65"
bzw. so gehts ja auch

Code: Alles auswählen

Close = "23.65"
print float(Close)

Verfasst: Freitag 20. Juli 2007, 12:43
von lunar

Code: Alles auswählen

float('foo')
wirft die Fehlermeldung

Code: Alles auswählen

type 'exceptions.ValueError'>: invalid literal for float(): foo
Ich denke, du solltest jetzt von selbst darauf kommen, dass der Name Close an den String "Close" gebunden ist. Das kannst du dir auch "live" anschauen, indem du einfach mal die float-Konvertierung weglässt, und den String roh ausgibst.

Verfasst: Freitag 20. Juli 2007, 12:45
von Rebecca
Also wenn ich dein Programm ausfuehre, ist beim ersten durchlauf Close="Close", erst danach kommen die Zahlen. Die erste Zeile ist eine Header-Zeile, danach kommen erst die Zahlen. Ein einfaches print haette dir das gezeigt...

Verfasst: Freitag 20. Juli 2007, 12:56
von monocult
das wars, hatte die erste Zeile nicht gesehen :/ dachte das der csv Import das filtert. Aber eigentlich logisch.

Danke