Regular Expressions - Findet Ausdruck nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
BlackJack

@kingcools: Ich halte Dein Programm so für fehlerhaft. Es geht hier nicht darum eine allgemeinere Lösung zu programmieren sondern eine *robuste* Lösung die nicht sofort auf die Nase fällt wenn man sie mal kurz anhustet. Du hast ja selber schon ein Datum in Deinen Beispieldaten übersehen, und dann gesagt wir sollten davon ausgehen das Du das auch auslesen wolltest. Davon ist aber erst einmal keiner ausgegangen weil es eben sehr leicht passieren kann, dass da noch ein unvorhergesenes Datum irgendwo auftaucht, oder etwas anderes auf das Muster passt. Es kann Buchtitel mit einem Datum im Namen geben, zum Beispiel bei Zeitschriften oder zusammengefassten Papers von Tagungen und Kongressen. Das Muster könnte sogar auf Sachen zutreffen die gar kein Datum repräsentieren, zum Beispiel Teile von URLs.
kingcools
User
Beiträge: 12
Registriert: Montag 17. März 2014, 04:03

@kingcools: wer einen Hammer hat, sieht überall nur Nägel. Natürlich hast Du hier HTML. Und zwar eine Tabelle. Erste Spalte Buchtitel, zweite Spalte Autor, dritte Spalte Kennung, vierte Spalte Ausleihdatum, fünfte Spalte Rückgabedatum. Also wird jeder, der nicht durch Hammer (Reguläre Ausdrücke) verblendet ist, da auch Spalten auslesen wollen und nicht nach Mustern suchen.
Woher kommt jetzt schon wieder die Idee, ich würde abstreiten, dass HTML vorliegt? Oder ist das unglücklich formuliert von dir?
@kingcools: Ich halte Dein Programm so für fehlerhaft. Es geht hier nicht darum eine allgemeinere Lösung zu programmieren sondern eine *robuste* Lösung die nicht sofort auf die Nase fällt wenn man sie mal kurz anhustet. Du hast ja selber schon ein Datum in Deinen Beispieldaten übersehen, und dann gesagt wir sollten davon ausgehen das Du das auch auslesen wolltest. Davon ist aber erst einmal keiner ausgegangen weil es eben sehr leicht passieren kann, dass da noch ein unvorhergesenes Datum irgendwo auftaucht, oder etwas anderes auf das Muster passt. Es kann Buchtitel mit einem Datum im Namen geben, zum Beispiel bei Zeitschriften oder zusammengefassten Papers von Tagungen und Kongressen. Das Muster könnte sogar auf Sachen zutreffen die gar kein Datum repräsentieren, zum Beispiel Teile von URLs.
Richtig, die Fälle könnten auftreten. Bis das passiert (bzw. falls es passiert bevor ich Lust habe das weiterzuentwickeln) bleibe ich bei meiner funktionierenden Lösung. (Ich persönlich leihe mir entsprechende Paper nur bei der Unibibliothek aus, welche automatische Erinnerungen per Mail verschickt, dieser Fall ist schon mal ohne Interesse)
Hartes Overengineeren in meinen Augen. Fehlerlose (nicht trivale) Programme gibt es nicht.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@kingcools: Dein Ansatz ist fehlerhaft. Unter einem Deutschaufsatz würde stehen: Thema verfehlt. Und sich jetzt rausreden, dass es keine Fehlerfreien Programme gibt zählt nicht, weil es hier nicht um das Programm an sich geht, sondern den Algorithmus. Die triviale und fehlerfreie Vorgehensweise wäre einen HTML-Parser zu nehmen und die Tabellenstruktur zu nutzen.
BlackJack

@kingcools: Du behandelst HTML wie Text und nicht wie man HTML behandelt. In sofern streitest Du ab das Du HTML hast, statt Text der zufällig wie HTML aussieht.

Du redest hier eine nicht funktionierende Lösung schön. Das es keine fehlerfreien Programme gibt ist ein unsinniges Totschlagargument. Das zieht auch nur für Fehler die man nicht kennt. Denn wenn man einen Fehler erkannt hat, dann ist es sehr wohl möglich den zu beheben. Insbesondere wenn der einfach zu beheben ist, in dem man zum Beispiel die passende Technik verwendet, sieht ein verteidigen der kaputten ”Lösung” nach Faulheit oder reflexartigem Rechtfertigungsversuch einer schlechten Entwurfentscheidung um jeden Preis aus.
kingcools
User
Beiträge: 12
Registriert: Montag 17. März 2014, 04:03

@kingcools: Dein Ansatz ist fehlerhaft. Unter einem Deutschaufsatz würde stehen: Thema verfehlt. Und sich jetzt rausreden, dass es keine Fehlerfreien Programme gibt zählt nicht, weil es hier nicht um das Programm an sich geht, sondern den Algorithmus. Die triviale und fehlerfreie Vorgehensweise wäre einen HTML-Parser zu nehmen und die Tabellenstruktur zu nutzen.
Ein Vorgehen kann abstrakt nicht fehlerfrei sein, dass macht keinerlei Sinn. Fehlerfrei kann erst die Umsetzung sein, daher leider nicht sonderlich klug geschissen. Jetzt wird es allerdings albern.
In sofern streitest Du ab das Du HTML hast, statt Text der zufällig wie HTML aussieht.
Das glaubst du doch selber nicht. Wenn mir ein chinesischer Text vorliegt und ich die Zahlen auslesen möchte, dann schreibe ich die Zahlen, diese sind arabisch, einfach ab und lerne nicht erst Chinesisch. Dadurch behaupte ich aber nicht implizit, dass mir kein Chinesisch vorliegt. Es interessiert mich nur einfach nicht bei der Lösung. Deine Aussage ist eine Unterstellung, die du nachfolgend als wahr annimmst um es mir dann vorzuwerfen. Absoluter Unfug.
Du redest hier eine nicht funktionierende Lösung schön.
Die Lösung funktioniert. Wir können uns jetzt gerne über die Definition von "funktionieren" unterhalten, finde ich aber langweilig. Mach nen eigenen Thread auf, falls dich das interessiert.
Du redest hier eine nicht funktionierende Lösung schön. Das es keine fehlerfreien Programme gibt ist ein unsinniges Totschlagargument. Das zieht auch nur für Fehler die man nicht kennt. Denn wenn man einen Fehler erkannt hat, dann ist es sehr wohl möglich den zu beheben. Insbesondere wenn der einfach zu beheben ist, in dem man zum Beispiel die passende Technik verwendet, sieht ein verteidigen der kaputten ”Lösung” nach Faulheit oder reflexartigem Rechtfertigungsversuch einer schlechten Entwurfentscheidung um jeden Preis aus.
Als würde ich mit Mauern reden. Ich habe die Gründe für die Wahl meiner Lösung bzw. Beibehaltung meiner Lösung dargelegt. Wenn du zu faul bist diese zu lesen oder dies ignorierst, dann kann ich dir nicht helfen.

Klassische Programmiererdiskussion hier. Ich bin nun raus, ein Tipp:

Ihr hättet wesentlich konstruktiver helfen können, hättet ihr einfach z.B. geschrieben:
"Deine Variante funktioniert nicht, da du statt findall() die Methode match() verwendest. Deine Variante findet die Daten mittels findall("meine RE").
Aber es ist deutlich weniger fehleranfällig, wenn du den HTML-Code mittels z.B. BeautifulSoup parst. Damit hast du auch in Zukunft einen besseren Stand."

Höherer Informationsgehalt, wesentlich konstruktiver rübergebracht, denn es löst auch direkt den gegenwärtigen Ansatz, zeigt aber den Ausblick auf die im allgemeinen bessere Lösung.
Wieso ich meinen Lösungsweg nun erstmal bevorzuge habe ich bereits dargelegt, aber andere Motive als die eigenen scheint ihr/einige hier nicht zu akzeptieren.
Das man eine Lösung im Nachhinein noch ändern kann, solltet ihr wissen. Das im Entwicklungsprozess nicht sofort die optimale Lösung stehen muss, auch. Für mich als nicht BeautifulSoupkenner hätte es an einer Stelle, für die ich eine schnelle Lösung suchte, absolut keinen Sinn gemacht, noch ein extre Fass mit dem Einarbeiten in BeautifulSoup aufzumachen. Nichts hindert mich daran, dies später noch zu ändern.
Wieso ihr so sehr darauf fixiert seid, die im allgemeinen bessere Lösung zu verwenden ist mir unklar. Meine Variante funktioniert tadellos, der "Buch mit Datum im Titel"-Fall ist extrem unwahrscheinlich (ich leihe mir schlicht derartiges nicht (in der Stadtbücherei) aus) und dafür sehe ich es nicht ein beim ersten Entwurf mit der Kanone auf Spatzen zu schießen.

So und mehr sage ich dazu nicht. Danke dennoch für den BeautifulSoup-Hinweis.
Antworten