Wie am besten Datei aufbauen?

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.
marco_
User
Beiträge: 78
Registriert: Freitag 25. März 2005, 12:24

So, wie bereits geschrieben hab ich mich für die Einfache TextDatei entschieden. Das ist ja kein Problem solang jede Zeile dem Aufbau von Wort#Übersetzung folgt. Was mach ich aber wenn ich auf einmal den Aufbau Wort#Übersetzung#Tipp will...

Ich dachte mir ich werde nach jedem # einen Buchstaben hinzufügen, der angibt ob es sich um eine Übersetzung einen Tipp oder ähnlichem handelt, also #WWort#ÜÜbersetzung#TTipp . Wie kann man das am besten lösen?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich täts halt einfach mit line.split('#') machen, wobei dann die alternativen Übersetzungen jeweils mit ';' voneinander geteilt wären. Damit wäre dann [0] das Wort, [1] die Übersetzungen und [2] die Tipps.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
marco_
User
Beiträge: 78
Registriert: Freitag 25. März 2005, 12:24

Ja schon klar, so mach ichs auch schon. Ich will das ganze aber etwas erweitern, sodass nicht immer ein Tipp vorhanden sein muss oder so dass ich eine Lautssprache hinzufügen kann wenn ich will.
Der normale Aufbau ist ja nur Wort;wort;Wort#Übersetzung;Übersetzung
aber wenn jetzt von fünfzig Vokabeln eines Mit dem Aufbau Wort;Wort#Übersetzung;Übersetzung#Lautssprache#Tipp ist, steigt das Programm aus. Deswegen wollte ich fragen was für Möglichkeiten es gibt dies zu ermöglichen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-

s = "WWort;Wort#ÜÜbersetzung;Übersetzung#LLautssprache#TTipp"
w = {}
for element in s.split('#'):
    print element
    if element.startswith('W'):
        w['Wort'] = element[1:].split(';')
    elif element.startswith('Ü'):
        w['Übersetzung'] = element[1:].split(';')
    elif element.startswith('L'):
        w['Lautsprache'] = element[1:].split(';')
    elif element.startswith('T'):
        w['Tipp'] = element[1:].split(';')

print w
Textdateien sind halt ein suboptimales Speicherformat.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
marco_
User
Beiträge: 78
Registriert: Freitag 25. März 2005, 12:24

Naja, welche Dateiart soll ich den sonst nehmen, YAML ist mir leider zu kompliziert...
bzw. Danke für die Hilfe, echt super gelöst
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

marco_ hat geschrieben:Naja, welche Dateiart soll ich den sonst nehmen, YAML ist mir leider zu kompliziert...
Ich würde ja einfach pickle/mashall nehmen. Und wenn es unbedingt menschenlesbar sein sollte dann in XML serialisieren (also eine Art pickle im XML Format). Aber gut, es ist ja dein Programm, lass dich nicht zu sehr von mir beeinflussen*g*
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
marco_
User
Beiträge: 78
Registriert: Freitag 25. März 2005, 12:24

Gibt es denn eine gute Dokumentation oder Anleitungen für XML unter Python?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

marco_ hat geschrieben:Gibt es denn eine gute Dokumentation oder Anleitungen für XML unter Python?
Mit XML Marshalling Modulen brauchst du XML nicht mal zu können, du sagst (etwas vereinfacht) MarshallerModul.dump(objektmitdeinendaten, dateiname) und schon wird eine gültige XML Datei auf deiner Festplatte gespeichert. Diese kannst du dann wieder einlesen und exakt so verwenden, wie vor dem "einlegen".

Aber ja, es gibt das Buch Python & XML, sowie ein ganzes kapitel zu dem Thema im Python Cookbook.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten