Zwei Keys und ein Value in Datei speichern

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
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

Hallo zusammen,

ich versuche zur Zeit für mein kleines Stickmusterprogramm die Muster aus dem Code in eine externe Datei zu verbannen.
Als ersten Versuch habe ich einen Buchstaben und die dazugehörige zweidimensionale Liste mit shelve gespeichert. Nun würde ich aber gerne noch verschiedene Schriftarten hinzufügen. Aber dann hätte ich zwei Keys und ein Value, also
Key 1: Schriftart
Key 2: Buchstabe
Value: Liste
Leider habe ich das mit shelve nicht hin bekommen, geht das damit überhaupt?
Weiß jemand, wie oder womit man das umsetzen kann und kann mir einen Tipp geben?

Schon einmal vielen Dank!
sebastian0202
User
Beiträge: 168
Registriert: Montag 9. Mai 2016, 09:14
Wohnort: Berlin

Für solche Dinge nutze ich immer gerne JSON.
Vielleicht eignet sich für deine Bedürfnisse aber auch eine einfache CSV-Datei?

Code: Alles auswählen

JSON: 
{
    "Stickmuster_1": {
        "Schriftart": "Consolas",
        "Buchstabe": "A",
        "Werte": []
    }
}

CSV:
Consolas;A;1;2;3;4
Arial;B;5;9;
...
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

JSON ist deutlich lesbarer als CSV und auch flexibler. Ohne Not würde ich heutzutage gar nicht mehr zu CSV greifen.
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

Geplant und teilweise umgesetzt ist, dass der Benutzer eine Schriftart auswählt und Text eingibt. Dann wird die Texteingabe in einzelne Buchstaben zerlegt und jeder Buchstabe unter Berücksichtigung der Schriftart aus der externen Datei raus gesucht. Aus der Datei kommen zweidimensionale Listen, die zu einer großen zweidimensionalen Liste zusammen gesetzt werden, die wiederum über tkinter angezeigt wird.

Dazu werde ich mich jetzt erstmal mit JSON beschäftigen.
Vielen Dank für die Antworten!
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

Ich habe da jetzt zu JSON noch eine Frage. Speichern und Laden der Daten klappt zwar, aber ich frage mich, ob man das nicht noch lesbarer hinbekommen kann.
Wenn ich z.B. etwas so speicher

Code: Alles auswählen

    import json
    data = {'Schreibschrift': {'A': [[1, 2], [3, 4]]}}
    with io.open('data.json', 'w', encoding='utf8') as outfile:
        str_ = json.dumps(data)
        outfile.write(str_)
Dann steht in der Datei:

Code: Alles auswählen

{"Schreibschrift": {"A": [[1, 2], [3, 4]]}}
Oder ich änder die Ausgabe in:

Code: Alles auswählen

    str_ = json.dumps(data, indent=4)
Steht in meiner Datei

Code: Alles auswählen

{
    "Schreibschrift": {
        "A": [
            [
                1,
                2
            ],
            [
                3,
                4
            ]
        ]
    }
}
Andere Formatierungen habe ich nicht hinbekommen, hätte aber gerne zwecks besserer Lesbarkeit so etwas wie

Code: Alles auswählen

{
    "Schreibschrift": {"A": [[1, 2],
				                 [3, 4]]}
}
Weiß jemand ob bzw. wie das möglich ist?
Antworten