Hallo
wollte ein Script erstellen und fragen ob mein vorgehen richtig ist.
Ich habe eine Textdatei die folgendermaßen aufgebaut ist.
<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP" > Morgen 1
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
<Datei Kennung="469" Titel="Trop Hall W " Bereich="izr" > Trop Hall W
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
Ich wollte jetzt das jeweils eine neue Datei erstellt wird mit dem Namen welcher bei Titel angegebn ist.
Inhalt der Datei wäre dann: Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Mein Plan dazu:
1. Datei einlesen
2. das erste mal den Bereich <Datei ........ </Datei> zwischenspeichern
3. von Titel den Wert auslesen
4. Datei erstellen mit dem Name vom Titel
5. In diese Datei das zwischengespeicherte einfügen
6. Aus dieser Datei dann entfernen was in der ersten Zeile steht von (<Datei Kennung="....." Titel="........" Bereich="....." >)
und letzte Zeile entfernen (</Datei>).
7. Wieder vorn anfangen und den nächsten Bereich einlesen.
Ist dieser Plan erstmal so in Ordnung oder würdet Ihr das anders machen, Reihenfolge, Vorgehensweise?
Grüße
Daten aus Textdatei in andere Textdatei schreiben
Hallo und willkommen im Forum!
Es handelt sich wohl eher um eine XML-Datei als um eine einfache Textdatei. Python bietet dafür jede Menge Unterstützung, dann musst du nicht alles per Hand machen und kannst direkt auf den Inhalt der Datei-Elemente zugreifen. Insgesamt sollte das Script dann nicht länger werden als vielleicht 10 Zeilen. Am besten suchst du hier im Forum ein wenig nach XML, dann bekommst du einen Überblick über die Tools.
Es handelt sich wohl eher um eine XML-Datei als um eine einfache Textdatei. Python bietet dafür jede Menge Unterstützung, dann musst du nicht alles per Hand machen und kannst direkt auf den Inhalt der Datei-Elemente zugreifen. Insgesamt sollte das Script dann nicht länger werden als vielleicht 10 Zeilen. Am besten suchst du hier im Forum ein wenig nach XML, dann bekommst du einen Überblick über die Tools.
Das Leben ist wie ein Tennisball.
Hallo danpy,
soll das xml sein? Dann würde noch ein root-Element fehlen, das die vielen <Datei...> umschließt.
Ist dann der Text zwischen den >...< noch irgendwie formatiert?
Ich verstehe nicht, was Du mit Zwischenspeichern meinst.
Soll immer die ganze Zeile in der <Datei ...> steht nicht gespeichert werden?
Dann:
Datei Zeilenweise einlesen:
1. Wenn Zeile <Datei... enthält, neue Datei output mit Namen titel erstellen.
2. Wenn Zeile </Datei> enthält output schließen
3. Sonst Zeile in output schreiben, falls output eine geöffnete Datei ist.
Grüße
Sirius
soll das xml sein? Dann würde noch ein root-Element fehlen, das die vielen <Datei...> umschließt.
Ist dann der Text zwischen den >...< noch irgendwie formatiert?
Ich verstehe nicht, was Du mit Zwischenspeichern meinst.
Soll immer die ganze Zeile in der <Datei ...> steht nicht gespeichert werden?
Dann:
Datei Zeilenweise einlesen:
1. Wenn Zeile <Datei... enthält, neue Datei output mit Namen titel erstellen.
2. Wenn Zeile </Datei> enthält output schließen
3. Sonst Zeile in output schreiben, falls output eine geöffnete Datei ist.
Grüße
Sirius
Genau das sollte man auf keinen Fall, niemals und unter keinen Umständen tun. Wer xml per Hand verarbeitet, der kann sich nur in den eigenen Fuß schießen. Fehler sind garantiert, unübersichtlicher Code entsteht durch die ganzen Sonderfälle und bei kleinsten Änderungen an der XML-Datei, obwohl es sich um die selben Daten handelt, fliegt eim das ganze um die Ohren. Nicht zu vergessen, dass man noch mehr Code programmieren muss. Eine einfache xpath-Abfrage ist kürzer als dein vorgeschlagenes händisches Parsing und ist in jeder Angelegenheit einem eigenen Ansatz überlegen.Sirius3 hat geschrieben:Datei Zeilenweise einlesen:
1. Wenn Zeile <Datei... enthält, neue Datei output mit Namen titel erstellen.
2. Wenn Zeile </Datei> enthält output schließen
3. Sonst Zeile in output schreiben, falls output eine geöffnete Datei ist.
Das Leben ist wie ein Tennisball.
Hallo
danke für die Begrüßung, das geht ja richtig schnell.
Habe mir schon gedacht das ich mich umständlich ausgedrückt habe.
Die Datei ist eine reine Textdatei, kein xml.
Habe die Datei mal mit Zeilennummern versehen, so ist es übersichtlicher?
1.<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP" > Morgen 1
2.
3.Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
.....
14.
15.</Datei>
16.<Datei Kennung="469" Titel="Trop Hall W " Bereich="izr" > Trop Hall W
17.
.......
18.Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
39.
40.</Datei>
In der Textdatei gibt es immer ein bestimmtes Muster der Daten:
1. Startet immer mit <Datei
2. eine Leerzeile
3. der Text - Länge ist unterschiedlich
4. eine Leerzeile
5. endet immer mit </Datei>
6. dann wieder <Datei
Mein Plan dazu:
1. Textdatei einlesen
2. das erste mal den Bereich <Datei ........ </Datei> einlesen und
3. neue Datei erstellen mit dem Inhalt vom gerade eingelesenen
4. Name der Datei wird gebildet vom Wert des Titels
5. Aus dieser Datei dann entfernen was in der ersten Zeile steht von <Datei Kennung="....." Titel="........" Bereich="....." >
und letzte Zeile entfernen </Datei>.
6. Wieder vorn anfangen und den nächsten Bereich einlesen.
Sollte dann so aussehen wenn der erste Bereich eingelesn wurde.
Morgen 1.txt
Inhalt wäre: Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.................
Habe den Plan schon ein wenig verändert.
Was sagt Ihr dazu?
danke für die Begrüßung, das geht ja richtig schnell.

Habe mir schon gedacht das ich mich umständlich ausgedrückt habe.
Die Datei ist eine reine Textdatei, kein xml.
Habe die Datei mal mit Zeilennummern versehen, so ist es übersichtlicher?
1.<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP" > Morgen 1
2.
3.Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
.....
14.
15.</Datei>
16.<Datei Kennung="469" Titel="Trop Hall W " Bereich="izr" > Trop Hall W
17.
.......
18.Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
39.
40.</Datei>
In der Textdatei gibt es immer ein bestimmtes Muster der Daten:
1. Startet immer mit <Datei
2. eine Leerzeile
3. der Text - Länge ist unterschiedlich
4. eine Leerzeile
5. endet immer mit </Datei>
6. dann wieder <Datei
Mein Plan dazu:
1. Textdatei einlesen
2. das erste mal den Bereich <Datei ........ </Datei> einlesen und
3. neue Datei erstellen mit dem Inhalt vom gerade eingelesenen
4. Name der Datei wird gebildet vom Wert des Titels
5. Aus dieser Datei dann entfernen was in der ersten Zeile steht von <Datei Kennung="....." Titel="........" Bereich="....." >
und letzte Zeile entfernen </Datei>.
6. Wieder vorn anfangen und den nächsten Bereich einlesen.
Sollte dann so aussehen wenn der erste Bereich eingelesn wurde.
Morgen 1.txt
Inhalt wäre: Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.................
Habe den Plan schon ein wenig verändert.

Was sagt Ihr dazu?
@EyDu: ich denke eher, da hat jemand beim Erzeugen der Ursprungsdatei gedacht, er würde gerne
sowas wie pseudo-XML schreiben. Dass es sich um kein XML handelt, sieht man ja schon am
fehlenden root-Tag. Und pseudo-XML kann eben kein XML-Parser lesen. Pech für denjenigen, der
die Daten weiterverarbeiten will.
sowas wie pseudo-XML schreiben. Dass es sich um kein XML handelt, sieht man ja schon am
fehlenden root-Tag. Und pseudo-XML kann eben kein XML-Parser lesen. Pech für denjenigen, der
die Daten weiterverarbeiten will.
@danpy: wie in meinem ersten Posting, am besten die Datei zeilenweise verarbeiten.
Wenn Du weißt, was Du tust, so:
Wenn Du weißt, was Du tust, so:
Code: Alles auswählen
import re
REG_PARSE=re.compile(r'<Datei[^>]*Titel="\s*([^"]*?)\s*"[^>]*>\s*\1\s*(.*?\n)\s*</Datei>',re.DOTALL)
with open(filename) as infile:
for outfilename, text = REG_PARSE.finditer(infile.read()):
with open('%s.txt'%outfilename,'w') as outf:
outf.write(text)
Wo sieht man denn an den Daten, dass es sich nicht um XML handelt? Es steht doch oben, dass es sich um einen Ausschnitt aus einer Datei handelt und nicht um den kompletten Inhalt. Wir werden es aber nie erfahren, wenn danpy nicht mal eine komplette Datei zeigt. Und sollte tatsächlich nur ein root-Element fehlen, dann würde ich das eher dynamisch hinzufügen als mit regulären Ausdrücken zu arbeiten.
Was passiert, wenn zum Beispiel die Datei-Elemente in andere Elemente verschachtelt werden, dann aber nicht zu den extrahierenden Daten dazugehören? So etwas ist jetzt nicht unwahrscheinlich und wird bei deinem RE zu diversen Kunststückchen führen. Und natürlich fallen dann noch so übliche Sachen an: was ist zum Beispiel mit Whitespace hinter dem Elementnamen? Man sollte erwarten, dass das vollkommen in Ordnung ist. Bei dir bekommt man dann allerdings nichts zurück.
Was passiert, wenn zum Beispiel die Datei-Elemente in andere Elemente verschachtelt werden, dann aber nicht zu den extrahierenden Daten dazugehören? So etwas ist jetzt nicht unwahrscheinlich und wird bei deinem RE zu diversen Kunststückchen führen. Und natürlich fallen dann noch so übliche Sachen an: was ist zum Beispiel mit Whitespace hinter dem Elementnamen? Man sollte erwarten, dass das vollkommen in Ordnung ist. Bei dir bekommt man dann allerdings nichts zurück.
Das Leben ist wie ein Tennisball.
Und noch viel mehr schlimme Dinge können passieren, wenn man denkt, man könnte pseudo-XML
durch ein paar kleine Änderungen in richtiges XML umwandeln. In 99% der Fälle bricht einfach nur
der Parser mit einer Fehlermeldung ab, in den restlichen Fällen passieren Dinge, die der Laie nicht
bemerkt / nicht versteht und zum Schluß mit verstümmelten Dateien dasteht.
@danpy: Woher kommt die Eingabedatei? Wer erzeugt sie? Gibt es eine Spezifikation dafür?
durch ein paar kleine Änderungen in richtiges XML umwandeln. In 99% der Fälle bricht einfach nur
der Parser mit einer Fehlermeldung ab, in den restlichen Fällen passieren Dinge, die der Laie nicht
bemerkt / nicht versteht und zum Schluß mit verstümmelten Dateien dasteht.
@danpy: Woher kommt die Eingabedatei? Wer erzeugt sie? Gibt es eine Spezifikation dafür?
Du willst jetzt aber nicht erzählen, dass ein Abbruch durch eine Fehlermeldung etwas Schlechtes ist, oder? So hat man zumindest, im Gegensatz zu der RE-Lösung, die Chance etwas Unerwartetes zu erkennen. Aber ohne das Format macht eine Diskussion in diesem Kontext darüber nicht besonders viel Sinn.
Das Leben ist wie ein Tennisball.
Mahlzeit an alle.
Bin jetzt noch nicht dazugekommen den Code von Sirius nachzuschauen und zulesen.
Muss erstmal etwas essen.
Da gefragt wurde ob das eine xml datei ist, nein es ist eine datei mit der endung .txt
Anbei wie eine Datei aussieht.
In der Textdatei gibt es immer ein bestimmtes Muster der Daten:
1. Startet immer mit <Datei
2. eine Leerzeile
3. der Text - Länge ist unterschiedlich mit Leerzeilen.
4. eine Leerzeile
5. endet immer mit </Datei>
6. dann wieder <Datei

Bin jetzt noch nicht dazugekommen den Code von Sirius nachzuschauen und zulesen.
Muss erstmal etwas essen.
Da gefragt wurde ob das eine xml datei ist, nein es ist eine datei mit der endung .txt
Anbei wie eine Datei aussieht.
In der Textdatei gibt es immer ein bestimmtes Muster der Daten:
1. Startet immer mit <Datei
2. eine Leerzeile
3. der Text - Länge ist unterschiedlich mit Leerzeilen.
4. eine Leerzeile
5. endet immer mit </Datei>
6. dann wieder <Datei
Code: Alles auswählen
<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP" > Morgen 1
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
<Datei Kennung="469" Titel="Trop Hall W " Bereich="izr" > Trop Hall W
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP" > Morgen 1
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP" > Morgen 1
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP" > Morgen 1
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP" > Morgen 1
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
@danpy: Was für eine Dateinamensendung eine Datei hat entscheidet nicht darüber ob es eine XML-Datei ist oder nicht, sondern der Inhalt. Wenn es dort tatsächlich kein Wurzelelement gibt, dann ist es kein XML, aber nicht weil der Dateiname mit '.txt' endet.
Wer oder was erzeugt denn so eine Datei? Ich würde mir ja ein möglichst schweres Buch über XML nehmen, den Verantwortlichen suchen, und so lange mit dem Buch auf ihn einschlagen bis er schwört so etwas furchtbares nie wieder zu tun.
Statt eines regulären Ausdrucks würde ich für die erste Zeile wohl zu einer Parserbibliothek wie PyParsing greifen.
Wer oder was erzeugt denn so eine Datei? Ich würde mir ja ein möglichst schweres Buch über XML nehmen, den Verantwortlichen suchen, und so lange mit dem Buch auf ihn einschlagen bis er schwört so etwas furchtbares nie wieder zu tun.

Statt eines regulären Ausdrucks würde ich für die erste Zeile wohl zu einer Parserbibliothek wie PyParsing greifen.
Habe jetzt mal den code von Sirius probiert
da kommt jetzt folgende Meldung
Was muss ich den jetzt machen?
Code: Alles auswählen
import re
REG_PARSE=re.compile(r'<Datei[^>]*Titel="\s*([^"]*?)\s*"[^>]*>\s*\1\s*(.*?\n)\s*</Datei>',re.DOTALL)
with open(wiki-00) as infile:
for outfilename, text = REG_PARSE.finditer(infile.read()):
with open('%s.txt'%outfilename,'w') as outf:
outf.write(text)
Code: Alles auswählen
File "codesirius.py", line 6
for outfilename, text = REG_PARSE.finditer(infile.read()):
^
SyntaxError: invalid syntax
@danpy: Nun da ist offensichtlich ein Syntaxfehler bei der ``for``-Schleife. Der sollte aber eigentlich auch für Pytho-Anfänger leicht zu beheben sein, denn Schleifen sind Grundlagen.
Guten Morgen
habe jetzt über die Schleifen gelesen und da fehlt im Code eine Variabel.
Sollte eigentlich so aussehen: for i in
Habe mir überlegt anders an die Lösung heranzugehen.
Hier ist der Code on Sirius.
Ich werde der Reihe nach abarbeiten was der Code macht.
Wenn ich das richtig verstehe steht in der ersten Zeile das die Datei von bis eingelesen wird.
Habe nun versucht mit print das auszugeben bekomme aber nur eine Fehlermeldung
Fehlermeldung
Was mache ich falsch?
habe jetzt über die Schleifen gelesen und da fehlt im Code eine Variabel.
Sollte eigentlich so aussehen: for i in
Habe mir überlegt anders an die Lösung heranzugehen.
Hier ist der Code on Sirius.
Code: Alles auswählen
import re
REG_PARSE=re.compile(r'<Datei[^>]*Titel="\s*([^"]*?)\s*"[^>]*>\s*\1\s*(.*?\n)\s*</Datei>',re.DOTALL)
with open(filename) as infile:
for outfilename, text = REG_PARSE.finditer(infile.read()):
with open('%s.txt'%outfilename,'w') as outf:
outf.write(text)
Ich werde der Reihe nach abarbeiten was der Code macht.
Wenn ich das richtig verstehe steht in der ersten Zeile das die Datei von bis eingelesen wird.
Code: Alles auswählen
REG_PARSE=re.compile(r'<Datei[^>]*Titel="\s*([^"]*?)\s*"[^>]*>\s*\1\s*(.*?\n)\s*</Datei>',re.DOTALL)
Code: Alles auswählen
import re
REG_PARSE=re.compile(r'<Datei[^>]*title="\s*([^"]*?)\s*"[^>]*>\s*\1\s*(.*?\n)\s*</Datei>',re.DOTALL)
with open(file) as infile:
print "REG_PARSE"
Code: Alles auswählen
File "schritt.py", line 4
print "REG_PARSE"
^
IndentationError: expected an indented block
@danpy: Bei der Schleife fehlt keine Variable — es gibt ja sogar zwei — sondern das ``=`` müsste ein ``in`` sein.
In der ersten Zeile wird nichts eingelesen sondern ein regulärer Ausdruck in ein Objekt übersetzt mit dem man diesen Audruck auf Zeichenketten anwenden kann. Und ein ``print "REG_PARSE"`` gibt nicht einmal dieses Objekt aus, sondern einfach den Text „REG_PARSE”.
Die Fehlermeldung sagt eigentlich ziemlich deutlich dass dort ein eingerückter Block erwartet wird. Einrückung ist ein wesentlicher Bestandteil von Python's Syntax und wird deshalb in jedem halbwegs vernünftigen Tutorial bei den ersten Kontrollstrukturen behandelt bei denen der Compiler wissen muss welcher Code zu einem Block gehört.
Du solltest die konkrete Aufgabe vielleicht erst einmal zurück stellen und ein ganz allgemeines Python-Tutorial durcharbeiten um die Grundlagen bis mindestens zum Definieren von eigenen Funktionen zu lernen. In der Python-Dokumentation ist ein Tutorial und Learn Python The Hard Way scheint für Anfänger ganz gut zu sein (nicht vom Namen abschrecken lassen).
Reguläre Ausdrücke sind eine Sprache für sich und auch nicht nur auf Python beschränkt. Mindestens eine Bibliothek dafür findet man für viele Programmiersprachen. Darüber gibt es also auch unabhängig von Python-Dokumentation Tutorials und Bücher. Auf Python bezogen gibt es in der Python-Dokumentation neben der Referenz zum `re`-Modul noch das Regular Expression HOWTO.
In der ersten Zeile wird nichts eingelesen sondern ein regulärer Ausdruck in ein Objekt übersetzt mit dem man diesen Audruck auf Zeichenketten anwenden kann. Und ein ``print "REG_PARSE"`` gibt nicht einmal dieses Objekt aus, sondern einfach den Text „REG_PARSE”.
Die Fehlermeldung sagt eigentlich ziemlich deutlich dass dort ein eingerückter Block erwartet wird. Einrückung ist ein wesentlicher Bestandteil von Python's Syntax und wird deshalb in jedem halbwegs vernünftigen Tutorial bei den ersten Kontrollstrukturen behandelt bei denen der Compiler wissen muss welcher Code zu einem Block gehört.
Du solltest die konkrete Aufgabe vielleicht erst einmal zurück stellen und ein ganz allgemeines Python-Tutorial durcharbeiten um die Grundlagen bis mindestens zum Definieren von eigenen Funktionen zu lernen. In der Python-Dokumentation ist ein Tutorial und Learn Python The Hard Way scheint für Anfänger ganz gut zu sein (nicht vom Namen abschrecken lassen).
Reguläre Ausdrücke sind eine Sprache für sich und auch nicht nur auf Python beschränkt. Mindestens eine Bibliothek dafür findet man für viele Programmiersprachen. Darüber gibt es also auch unabhängig von Python-Dokumentation Tutorials und Bücher. Auf Python bezogen gibt es in der Python-Dokumentation neben der Referenz zum `re`-Modul noch das Regular Expression HOWTO.
Ok, dann ist dieser Code anscheinend nichts für mich und der Sirius hat da irgend etwas zusammengeschrieben.
Werde dann meine Frage nochmal stellen:
Ich habe eine Datei die so aussieht:
Wollte dann ein Script schreiben das mir viele Dateien ausgibt die genauso heißen wie jeweils der Titel
und mit folgenden Inhalt
Bevor ich das Sript schreibe muss ich erstmal wissen was es machen soll.
Hier mein Plan dazu:
1. Textdatei einlesen
2. das erste mal den Bereich <Datei ........ </Datei> einlesen und
3. neue Datei erstellen mit dem Inhalt vom gerade eingelesenen
4. Name der Datei wird gebildet vom Wert des Titels
5. Aus dieser Datei dann entfernen was in der ersten Zeile steht von <Datei Kennung="....." Titel="........" Bereich="....." >
und letzte Zeile entfernen </Datei>.
6. Wieder vorn anfangen und den nächsten Bereich einlesen.
Ist dieser Ablauf so in Ordnung oder sollte eine andere Reihenfolge gewählt werden?
Ich habe diese Frage schonmal gestellt, daraufhin habe ich eigentlich keine gescheite Antwort bekommen!
Sondern nur eigentlich nur darüber philosophiert ob das xml ist oder nicht.
Bitte diesmal keine Codes posten oder diskutieren über Datei xml ja oder nein!
Einfach nur sagen ob mein Plan so funktionieren könnte, wenn nicht dann sagen was ich daran ändern sollte.
Grüße
Werde dann meine Frage nochmal stellen:
Ich habe eine Datei die so aussieht:
Code: Alles auswählen
<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP" > Morgen 1
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
<Datei Kennung="469" Titel="Trop Hall W " Bereich="izr" > Trop Hall W
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP" > Morgen 1
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP" > Morgen 1
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP" > Morgen 1
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP" > Morgen 1
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
</Datei>
Wollte dann ein Script schreiben das mir viele Dateien ausgibt die genauso heißen wie jeweils der Titel
und mit folgenden Inhalt
Code: Alles auswählen
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Hier kommt ein Text aus Zahlen und Buchstaben, bestehend aus mehreren Zeilen.
Bevor ich das Sript schreibe muss ich erstmal wissen was es machen soll.
Hier mein Plan dazu:
1. Textdatei einlesen
2. das erste mal den Bereich <Datei ........ </Datei> einlesen und
3. neue Datei erstellen mit dem Inhalt vom gerade eingelesenen
4. Name der Datei wird gebildet vom Wert des Titels
5. Aus dieser Datei dann entfernen was in der ersten Zeile steht von <Datei Kennung="....." Titel="........" Bereich="....." >
und letzte Zeile entfernen </Datei>.
6. Wieder vorn anfangen und den nächsten Bereich einlesen.
Ist dieser Ablauf so in Ordnung oder sollte eine andere Reihenfolge gewählt werden?
Ich habe diese Frage schonmal gestellt, daraufhin habe ich eigentlich keine gescheite Antwort bekommen!
Sondern nur eigentlich nur darüber philosophiert ob das xml ist oder nicht.
Bitte diesmal keine Codes posten oder diskutieren über Datei xml ja oder nein!
Einfach nur sagen ob mein Plan so funktionieren könnte, wenn nicht dann sagen was ich daran ändern sollte.
Grüße
Ähhhm ... nein. Das du den Code nicht zum Laufen bekommst liegt eher an deinen mangelnden Pythonkenntnissen als an der kleinen Unachtsamkeit von Sirius3.danpy hat geschrieben:Ok, dann ist dieser Code anscheinend nichts für mich und der Sirius hat da irgend etwas zusammengeschrieben.
Das Leben ist wie ein Tennisball.