Einen wunderschönen Tag wünsche ich allen,
ich bin ein Python Neuling und möchte gern ein Skript schreiben. Und hoffe ihr könnt mir bei meine Vorhaben helfen.
Folgendes sollte das Skript erledigen:
-XML Datei einlesen
-Einen TAG suchen: z.B. <test><anderer tag></anderer tag></test>
-Den gefundenen TAG löschen und alles was innerhalb des TAGs war + einrutschen der Zeilen(Zeilenumbrüche mit löschen)
-Datei speichern mit einen anderen Namen
Es klingt ganz einfach, leider fehlt mir noch die Erfahrung mit Python.
Kann vielleicht einer mir ein Beispiel nennen, wie dies umzusetzen ist?
Grüße remax
XML Datei bearbeiten
lxml ist eine gute Bibliothek für die XML-Verarbeitung, die man aber leider nachinstallieren muss. Unter Linux ist das kein Problem, auf dem Mac empfiehlt es sich Python und lxml über Macports zu installieren, denn sonst gibt es Probleme und unter Windows weiß ich's nicht.
lxml hat eine cssselect-Methode, die so funktioniert wie JQuery und einfache Manipulation von XML-DOMs erlaubt.
Den SAX-Weg würde ich nur gehen, wenn die Datei so groß ist, dass sie nicht in den Arbeitsspeicher passt oder es auf jede Millisekunde bei der Verarbeitung ankommt. In allen anderen Fällen würde ich Speicher und Laufzeit gegen eine viel einfachere Programmierung eintauschen.
Stefan
lxml hat eine cssselect-Methode, die so funktioniert wie JQuery und einfache Manipulation von XML-DOMs erlaubt.
Den SAX-Weg würde ich nur gehen, wenn die Datei so groß ist, dass sie nicht in den Arbeitsspeicher passt oder es auf jede Millisekunde bei der Verarbeitung ankommt. In allen anderen Fällen würde ich Speicher und Laufzeit gegen eine viel einfachere Programmierung eintauschen.
Stefan
Ich habe leider nicht die Möglichkeit Pakete auf dem laufendem Server System zu installieren(SUSE 10), aber Python ist da drauf. Deswegen hatte ich vor mit Python dieses Skript zu schreiben. Mit welchem Befehl kann man den raus kriegen, welche Python Pakete bereits installiert sind?
Hm, http://www.google.com/search?q=suse+paketmanager , "rpm -q" oder so? Ich nix sprechen Suse. Wenn du nix installieren darfst, musst du eben mit http://www.google.com/search?q=python+documentation+xml auskommen... So ein DOM-Knoten hat die üblichen vom W3C definierten Methoden, die eigentlich in jeder Sprache irgendwie umständlich sind.remax hat geschrieben:Mit welchem Befehl kann man den raus kriegen, welche Python Pakete bereits installiert sind?
Stefan
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Wenn dein Python 2.5+ ist, kannst du auch ElementTree nutzen.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Mit welchem Befehl kann man den raus kriegen, welche Python Pakete bereits installiert sind?
Code: Alles auswählen
rpm -qa # listet alle Pakete
rpm -qa | grep python #fast alle python Relevanten, da suse die meist nach python-paketname benennt
Leider nur Python 2.4 installiert. Unter Help(xml) kann man sehen, dass es mit DOM uns SAX umgehen kann.
Hat einer für mich ein Beispiel, mit dem ich vielleicht anfangen könnte.
Bin leider ein absoluter Python Anfänger, habe aber einige Skills in anderen Skriptsprachen und Basic.
Hat einer für mich ein Beispiel, mit dem ich vielleicht anfangen könnte.
Bin leider ein absoluter Python Anfänger, habe aber einige Skills in anderen Skriptsprachen und Basic.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
http://effbot.org/zone/element-index.htm
ElementTree ist pure Python, darum sollte es keine Probleme geben, wenn du das einfach in deinen PATH wirfst.
Bevor du dir SAX/DOM antust, willst du das ausprobieren, denn die beiden machen wirklich keinen Spass.
ElementTree ist pure Python, darum sollte es keine Probleme geben, wenn du das einfach in deinen PATH wirfst.
Bevor du dir SAX/DOM antust, willst du das ausprobieren, denn die beiden machen wirklich keinen Spass.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
lxml.etree hat eine ".iterparse()"-Methode, die meines Wissens nur Teile des Dokuments einliest, und daher auch mit großen Dokumenten zurecht kommt.sma hat geschrieben:Den SAX-Weg würde ich nur gehen, wenn die Datei so groß ist, dass sie nicht in den Arbeitsspeicher passt […]