Parsen

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
Eisi
User
Beiträge: 62
Registriert: Sonntag 24. November 2013, 21:59

Hallo zusammen,

Auf der Suche nach einem Tutorial bei dem es ums Parsen geht bin ich leider nicht fündig geworden. Speziell geht es bei mir um txt Daten. Kennt jemand ne gute Seite oder ein gutes Buch? Vorzugsweise deutsch zur Not aber auch englisch.
BlackJack

@Eisi: Für ein Tutorial ist das vielleicht ein wenig umfangreich, denn es gibt ja zig Methoden Parser zu schreiben. Ich persönlich verwende gerne die PyParsing-Bibliothek wenn reguläre Ausdrücke anfangen zu kompliziert zu werden oder schlicht nicht mehr ausreichen. Es gibt aber auch andere Parser-Bibliotheken.
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

Kleine Zwischenfrage:

Wie könnte man 'parsen' in ein bis zwei Sätzen erklären?

Kann ich sagen, parsen ist so was wie neu strukturieren, oder liege ich da falsch?

mfg
BlackJack

@lackschuh: Wikipedia sagt dazu „Ein Parser [ˈpɑːʁzɐ] (engl. to parse, „analysieren“, bzw. lateinisch pars, „Teil“; im Deutschen gelegentlich auch Zerteiler) ist ein Computerprogramm, das in der Informatik für die Zerlegung und Umwandlung einer beliebigen Eingabe in ein für die Weiterverarbeitung brauchbares Format zuständig ist.”

Also vielleicht nicht „neu strukturieren”, sondern überhaupt erst mal in eine Datenstruktur überführen. Denn die Eingabe ist ja üblicherweise einfach Text.
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

@BlackJack

Hallo

Das Wiki Zitat verwirrt mich mehr als es hilft. Hab mal im Duden nachgeschaut und da steht zu Parser:
Substantiv, maskulin - Programm, das eine syntaktische Analyse durchführt

Also das mit 'neu strukturieren' ist auch Blödsinn.

Wie würdest du einem Unwissendem das Wort erklären? Folgendes verwirrt mich eben: "[...]erst mal in eine Datenstruktur überführen"

zB ein HTML Parser wie BeautifulSoup/HTMLParser: Wenn schon der Text in HTML formatiert vorliegt, ich mir alle Links oder so ausgeben lasse, dann habe ich ja eigentlich keine 'neue' Datenstruktur aufgebaut, oder?

Sry, eventuell ist das eher off topic...

mfg
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

lackschuh hat geschrieben:zB ein HTML Parser wie BeautifulSoup: Wenn schon Text in HTML formatiert vorliegt, ich mir alle Links oder so ausgeben lasse, dann habe ich ja eigentlich keine 'neue' Datenstruktur aufgebaut, oder?
Doch, genau das macht man. Am Anfang hast du nur Text, also eine einfache lineare Folge von Buchstaben (bzw. Bytes, aber den Schritt kann man sich sparen). Dieser Text wird dann überlichweise in einen Baum überführt. Die Knoten repräsentieren dann die HTML-Elemente mit all ihren Attributen, die Kanten beschreiben Eltern-Kind-Beziehungen. Die Operationen auf einem Baum sind ganz andere als auf einfachem Text und damit auch eindeutig andere Datenstrukturen.
Das Leben ist wie ein Tennisball.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Auch wenn die Struktur des Baumes schon im HTML/XML/SGML/... Format steckt, ist sie fuer Programme nicht direkt nutzbar: Das ist einfach nur Text. Erst der Parser der das Wissen um die Grammatik des Textes und seine Struktur hat kann dann die _Daten_struktur des Baumes fuer Programme aufbauen.

Der konkrete Fall ist aber doch recht speziell, weil die Struktur fuer Menschen recht einfach erkennbar ist.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

cofi hat geschrieben:Der konkrete Fall ist aber doch recht speziell, weil die Struktur fuer Menschen recht einfach erkennbar ist.
Der konkrete Fall ist doch eher der Normalfall. Warum sollte ich ein Datenformat nehmen, das man erst Parsen muß, also für den Computer ein Nachteil ist, wenn es nicht für den Menschen von Vorteil ist, weil er die Struktur schnell erkennt.
Alternativ könnte man alles als Binärdaten speichern, die der Computer nicht Parsen muß, dafür braucht der Mensch etwas mehr Gehirnkapazität, um es verstehen zu können.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Was ich damit meinte, ist dass hier die Rohdaten schon sehr strukturiert sind und das auch explizit erkennbar ist. So dass man eben den Eindruck bekommt, dass doch schon alles was man braucht in der Datei steht und kein besonderes Wissen durch den Parser dazukommen muss.

Fuer das Parsen an sich ist das natuerlich kein Spezialfall. Aber dein Einwand passt dann doch nur fuer Datenformate und das ist ein Subset von Parseranwendungen. Die Freiheit etwas computerfreundliches zu waehlen hat man bei natuerlichen Sprachen und auch Programmiersprachen beispielsweise nicht.
BlackJack

@cofi: Bei Programmiersprachen schon. Die will dann nur keiner (mehr) benutzen. ;-)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Pah, XSLT erfreut sich doch grosser Beliebtheit :)

Ach ne, nicht Beliebtheit ... Nutzung. Naja wer weiss ob das freiwillig ist :twisted:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lackschuh hat geschrieben:Das Wiki Zitat verwirrt mich mehr als es hilft. Hab mal im Duden nachgeschaut und da steht zu Parser:
Substantiv, maskulin - Programm, das eine syntaktische Analyse durchführt
Das finde ich etwas kurz gegriffen bzw. an der üblichen Nutzung des Wortes vorbei. So gesehen wäre ein Parser ein Programm welches einem sagt ob z.B. die Klammern balanciert sind. Klar, das macht ein Parser *auch*, aber das ist in der Regel eher Mittel zum Zweck, nämlich der Umwandlung der linearen Textdarstellung in eine Struktur die unter einer gegebenen Grammatik nützlicher für die Verarbeitung ist. Insofert finde ich kann man durchaus von "neu strukturieren" sprechen, der Duden ist nun auch eher kein typisches Informatik-Nachschlagewerk.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten