Seite 1 von 1
Ausgelesene Daten in String ohne Komma usw.?!
Verfasst: Samstag 2. Juli 2011, 19:51
von AlphaX2
Hallo Leute,
noch bin ich ziemlicher Anfänger und weiß nicht ob ich daher nur was übersehen habe, vielleicht reicht ja das richtige Schlagwort. Konkret geht es darum, dass ich auf m.lotto.de die letzten aktuellen Zahlen der Ziehung auslesen und ausgeben will.
Der Code sieht so aus:
Code: Alles auswählen
def last_ziehung(ziehung):
url = urllib2.urlopen('http://m.lotto.de/')
for lines in url.readlines():
if lines.startswith(' <span>'):
zahlen = lines[14:-8]
ziehung.append(zahlen)
return ziehung
ziehung = last_ziehung(ziehung=[])
ziehung = str(ziehung[:6]) #wandel zu string
print "Die letzte Ziehung: " + ziehung[1:-1]
# entfernen der [ ] Klammern
An und für sich funktioniert das ganze schon, allerdings finde ich es Mist, dass alle Zahlen mit Hochkomma ausgegeben werden, gern würde ich auch die normalen Komma entfernen. Die Frage ist jetzt nur wie das geht - gibts dafür eine Funktion, so das ich am Ende einen String bekomme, der nur die Zahlen enthält?!
Irgendwie steht ich aufm Schlauch.
Wenn die Lesefunktion an und für sich besser sein könnte, gerne her mit den Tipps!
AlphaX2
Re: Ausgelesene Daten in String ohne Komma usw.?!
Verfasst: Samstag 2. Juli 2011, 19:56
von snafu
Naja, lass halt die str()-Umwandlung weg. Am Code ist vieles, was man verbessern könnte, aber ich bin gerade schreibfaul.

Re: Ausgelesene Daten in String ohne Komma usw.?!
Verfasst: Samstag 2. Juli 2011, 20:00
von deets
@alphax2
Dein uebergebenes Listen-Argument, dass dann einfach "appended" wird ist un-pythonisch. Nimm stattdessen eine lokale Liste, und gib die zurueck. Wir sind hier in Python, nicht in C/C++, wo man sich mit solchen Designs die Frage nach dem "wer managed den Speicher" spart.
Ausserdem solltest du lieber auf BeautifulSoup umstellen zum scrapen von Webseiten. Denn dein Ansatz ist sehr wenig robust - wenn da mal wer die Anzahl von Spaces veraendert, bist du raus.
Stattdessen lieber mittels BeautifulSoup das p mit der Klasse "lottonumbers" suchen, und darin dann die Text-Kinder der spans rausholen & zu integern wandeln.
Re: Ausgelesene Daten in String ohne Komma usw.?!
Verfasst: Samstag 2. Juli 2011, 20:08
von hendrikS
Du kannst das probieren:
Aber last_ziehung

Das würde ich ändern. Entweder Deutsch oder Englisch. Fast noch besser als die Löcherliste.
Re: Ausgelesene Daten in String ohne Komma usw.?!
Verfasst: Samstag 2. Juli 2011, 20:11
von AlphaX2
Danke erstmal.
Vor allem für den Tipp mit BeautifulSoup, dass ich bei den ersten Änderungen raus bin is mir klar gewesen, war zunächst das erste was mir eingefallen ist.
Mit einer lokalen Liste meinst du, dass ich sie nicht als argument in die Funktion geben soll, oder?! Und wie kann ich dann die Zahlen in die Liste kriegen, was ist pythonischer?! Die Variable "zahlen" spuckt ja auch auch alle Zahlen einzeln aus, wegen der for-Schleife. Ich weiß mir da keine echte Lösung, gibts auch eine Doku zu dem BeautifulSoup - weil, das was du mir als Tipp gesagt hast versteh ich grade gar nicht^^
AlphaX2
Re: Ausgelesene Daten in String ohne Komma usw.?!
Verfasst: Samstag 2. Juli 2011, 20:13
von AlphaX2
hendrikS hat geschrieben:Du kannst das probieren:
Aber last_ziehung

Das würde ich ändern. Entweder Deutsch oder Englisch. Fast noch besser als die Löcherliste.
Ich hatte es mal auf Deutsch hab es dann aber wegen der Qt-UI geändert und war zu faul - das sollte noch kommen. Und wegen der "Loch"-Liste - Mensch das war ein Tippfehler^^
Edit das join hat folgendes ergeben:
Code: Alles auswählen
[ ' 8 ' , ' 1 0 ' , ' 2 2 ' , ' 3 0 ' , ' 3 6 ' , ' 4 5 ' ]
AlphaX2
Re: Ausgelesene Daten in String ohne Komma usw.?!
Verfasst: Samstag 2. Juli 2011, 20:14
von deets
Lokale Liste meint sowas:
Code: Alles auswählen
def f():
l = []
for wasauchimmer in xrange(100):
l.append(wasauchimmer)
return l
Du gibst die also nicht rein, sondern eine in der Funktion kreierte zurueck.
Bezueglich BeautifulSoup: meine Hinweise werden klarer, wenn du dessen Doku mal liest.
Re: Ausgelesene Daten in String ohne Komma usw.?!
Verfasst: Samstag 2. Juli 2011, 20:24
von hendrikS
AlphaX2 hat geschrieben:Edit das join hat folgendes ergeben:
Code: Alles auswählen
[ ' 8 ' , ' 1 0 ' , ' 2 2 ' , ' 3 0 ' , ' 3 6 ' , ' 4 5 ' ]
Bestimmt nicht.
Re: Ausgelesene Daten in String ohne Komma usw.?!
Verfasst: Samstag 2. Juli 2011, 20:30
von AlphaX2
@hendrikS:
Ich hab es doch mit copy/paste rein gehauen!? :K Was sollte denn eigentlich passieren!?
AlphaX2
Re: Ausgelesene Daten in String ohne Komma usw.?!
Verfasst: Samstag 2. Juli 2011, 20:40
von hendrikS
AlphaX2 hat geschrieben:Ich hab es doch mit copy/paste rein gehauen!? :K Was sollte denn eigentlich passieren!?
Es erfüllt Deine Anforderung aus dem ersten Post.
Re: Ausgelesene Daten in String ohne Komma usw.?!
Verfasst: Samstag 2. Juli 2011, 20:52
von BlackJack
@hendrikS: Doch das ist das Ergebnis — zu dem Zeitpunkt ist `ziehung` doch schon an eine Zeichenkettendarstellung der Liste gebunden.

Re: Ausgelesene Daten in String ohne Komma usw.?!
Verfasst: Samstag 2. Juli 2011, 21:00
von hendrikS
Ich habe das auch gerade noch mal probiert und war ganz irritiert. Ich hatte vorher noch die str Umwandlung entfernt. Also so:
Code: Alles auswählen
ziehung = ziehung[:6] #wandel zu string
print "Die letzte Ziehung: " + " ".join(ziehung)
Sorry.
Re: Ausgelesene Daten in String ohne Komma usw.?!
Verfasst: Samstag 2. Juli 2011, 21:13
von AlphaX2
Wow und Danke!
Demnächst werd ich mich wohl mal mit BeautifulSoup auseinandersetzen.
