Code Fehler?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
hans.mueller1206
User
Beiträge: 15
Registriert: Donnerstag 22. März 2012, 02:31

Hallo, ich mache Fortschritte in der Programmierung, aber jetzt komme ich nicht weiter.. ich habe diesen Code hier eigentlich doch richtig abgeändert (denke ich zu mindest) aber er sagt immer wieder "Keinen Stauf auf der xy gefunden". Ich habe auch keine Ahnung was ich falsch gemacht haben könnte, ich bitte um Hilfe. Danke

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib
import xml.dom.minidom
import random
import re
from xml.dom.minidom import Node

from plugin import *


class fussiPlugin(Plugin):

	@register("de-DE", ".*(stau) (.*)")
	
	def onlyone(self, speech, language, regex):
		searchString = regex.group(regex.lastindex).strip()
		gefunden = 0;
		html = urllib.urlopen("http://www.freiefahrt.info/upload/lmst.de_DE.xml").read()
		dom = xml.dom.minidom.parseString(html)	
		for node in dom.getElementsByTagName('item'):
			sendung = node.getElementsByTagName('title')
			sendeinfo = sendung[0].firstChild.data
			if re.match(".*"+searchString+".*", sendeinfo, re.IGNORECASE):
				gefunden = 1;
				self.say(sendeinfo, sendeinfo.split("(")[0].replace(":", "").replace("(*)", ''))
		if gefunden == 0:
			self.say(u"Keinen Stau auf der \""+searchString+"\" gefunden")
		self.complete_request()
Zuletzt geändert von Anonymous am Donnerstag 29. März 2012, 21:56, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Protip: Es ist leichter (und lehrreicher) Code von Grund auf zu erstellen und zu erweitern anstatt fertigen zu nehmen um hinterher nach Fehlern zu jagen.

Davon mal abgesehen: Denk doch mal logisch nach was von der Ausführung her passieren muss, damit du diese Meldung erhälst.
hans.mueller1206
User
Beiträge: 15
Registriert: Donnerstag 22. März 2012, 02:31

Also er sucht nach einem Stau auf der A3 z.B. und wenn er keinen findet soll er eben diesen Satz sagen, aber es gibt einen Stau auf der A3!! Deswegen kann ich es ja nicht verstehen, warum er ihn nicht ausspuckt
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Verstehst du auch nur eine einzige Zeile von dem von dir geposteten Code?
hans.mueller1206
User
Beiträge: 15
Registriert: Donnerstag 22. März 2012, 02:31

ich denke schon das ich das tue,
also am anfang oben unter Register steht der EIngabe Befehl.. also ich kann sagen Stau und dann xy dahinter und er sucht die xml datei danach ab!
Und zwar sucht er im title, weil das auch da angegeben wurde. Komisch ist eben nur das wenn ich sage Stau A3 das er dann keinen Stau findet. Ach so und das self.say(sendeinfo, sendeinfo.split("(")[0].replace(":", "").replace("(*)", '')) <--- soll den Doppelpunkt bei der Meldung durch eine Leerzeile ersetzen, ich denke aber das habe ich richtig gemacht! Ich hoffe ich habe das Quiz bestanden... wenn du aber einen Fehler siehst, wäre es nett wenn du mir helfen würdest :-)
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Offensichtlich sehen einige Daten anders aus als du glaubst.

Wenn du keine Entwicklungsumgebung mit eingebautem Debugger hast um dir den Programmablauf und die Daten währenddessen anzuschauen, dann verwende doch einfach ein paar print-Statements um dir relevante Werte ausgeben zu lassen. sendeinfo und searchString wären da direkt vor dem match eine gute Wahl.

BTW, an Beginn und Ende eines bestehenden regulären Ausdrucks jeweils .* anzufügen ist merkwürdig und führt im Endeffekt nur zu verlängerter Laufzeit durch Backtracking. Warum verwendest du nicht einfach re.search (siehe Matching vs. Searching)?
hans.mueller1206
User
Beiträge: 15
Registriert: Donnerstag 22. März 2012, 02:31

ich muss gestehen, ich verstehe nichts :-)
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

hans.mueller1206 hat geschrieben:ich muss gestehen, ich verstehe nichts :-)
Dann fangen wir halt langsam an.

Woher weißt du, dass dein Code wirklich die passenden Daten und das zugehörige Suchmuster hat?
Was glaubst du, was in searchString und sendeinfo stehen müsste?
Was steht wirklich in searchString und sendeinfo?
hans.mueller1206
User
Beiträge: 15
Registriert: Donnerstag 22. März 2012, 02:31

also ich weiß es nicht, ich müsste dafür wahrscheinlich irgendwie die xml datei auslesen können, aber ich weiß nicht wie!
kannst du uns mal in ts besuchen? Das wäre super!
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

/me hat geschrieben:Woher weißt du, dass dein Code wirklich die passenden Daten und das zugehörige Suchmuster hat?
Was glaubst du, was in searchString und sendeinfo stehen müsste?
Was steht wirklich in searchString und sendeinfo?
Bild

Sorry, could not resist :mrgreen:
Benutzeravatar
pillmuncher
User
Beiträge: 1482
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

hans.mueller1206 hat geschrieben:kannst du uns mal in ts besuchen?
In Traunstein?
In specifications, Murphy's Law supersedes Ohm's.
hans.mueller1206
User
Beiträge: 15
Registriert: Donnerstag 22. März 2012, 02:31

in teamspeak, also wenn hier jmd. zeit hat und lust hat zu helfen :-) ist er herzlich eingeladen
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

hans.mueller1206 hat geschrieben:also ich weiß es nicht, ich müsste dafür wahrscheinlich irgendwie die xml datei auslesen können, aber ich weiß nicht wie!
Das ist der falsche Ansatz. Wenn du wissen möchtest, welcher Wert zu einem bestimmten Zeitpunkt an einen bestimmten Namen gebunden ist, dann musst du ihn zu dem Zeitpunkt ausgeben. Ich habe jetzt zweimal versucht, dir dafür die Verwendung von print zu empfehlen. Da ich nicht glaube, dass ich mich völlig unverständlich ausgedrückt habe gehe ich davon aus, dass du mit dem Ratschlag nichts anfangen kannst. Das wiederum bringt mich zu dem Schluss, dass dir noch die absoluten Grundlagen von Python fehlen.

Das Python-Tutorial bietet einen guten Einstieg zum Lernen.
hans.mueller1206 hat geschrieben:kannst du uns mal in ts besuchen? Das wäre super!
Nein, das kann und will ich nicht. Ich bin hier im Forum weil ich anderen bei Problemen mit Python helfen und selber Neues hinzulernen möchte. Ich möchte keinen Audio-Kurs in Python-Programmierung halten und ich möchte auch nicht als unbezahlter Codieraffe eingesetzt werden.
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Ich befürchte auch, dass das nichts wird, wenn Hans nicht zumindest die Grundlagen erlernt hat. Von daher bin ich raus, amüsante Steilvorlagen hin oder her.
Antworten