aus datei in dictionaries

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
Milhouse
User
Beiträge: 5
Registriert: Montag 7. November 2011, 16:25

Hallo alle miteinander.
Ich habe da eine Frage bei der mir hoffentlich geholfen werden kann.
Ich habe hier eine datei mit dem namen wortliste.dat, in der sich pro zeile ein wort, sein grammatisches geschlecht und seine frequenz befindet. diese informationen sind getrennt durch TABS, also ist das format quasi "Wort\tGeschlecht\tFrequenz\n".
Ich möchte nun die informationen aus dieser datei in zwei dictionaries einordnen, genannt "Frequenz" und "Geschlecht".
Wie stelle ich das an?

Habe natürlich bereits den Befehl eingegeben die datei "wortliste.dat" zu öffnen mit dem argument "r".
problembär

Na ja, zeig' doch erstmal,

- wie Du eine Datei einliest und dann,
- wie Du ein leeres Dictionary mit Werten auffüllst.
Milhouse
User
Beiträge: 5
Registriert: Montag 7. November 2011, 16:25

nunja einlesen tue ich die mit

Code: Alles auswählen

open("wortliste.dat", "r")
nur wie ich das jetzt schaffe dass im einen dictionary der key gleich dem wort in der datei ist und value gleich der frequenz ist, und im anderen dictionary der key auch das wort ist nur value gleich dem geschlecht ist.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Schön, dass du Dateien zum Lesen öffnen kannst, aber von einem halbwegs eigenständigen Ansatz ist das natürlich weit entfernt. Wie sieht denn dein bisheriger Versuch aus?
Das Leben ist wie ein Tennisball.
Milhouse
User
Beiträge: 5
Registriert: Montag 7. November 2011, 16:25

naja das ist mein ansatz. aber wie soll ich denn nun weitermachen wenn ich nichtmal weiß wie ich wörter aus einer datei in ein dictionary packe und sie die richigen values haben?
Bin nunmal noch Anfänger.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Milhouse hat geschrieben:naja das ist mein ansatz. aber wie soll ich denn nun weitermachen wenn ich nichtmal weiß wie ich wörter aus einer datei in ein dictionary packe und sie die richigen values haben?
Bin nunmal noch Anfänger.
Dann pack doch mal Wörter aus einem String in ein Dictionary! Ob der später mal aus einer Datei kommt ist ziemlich egal...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dann solltest du vielleicht noch einmal das Tutorial durcharbeiten.

Edit: durcharbeiten nicht nur lesen.
Das Leben ist wie ein Tennisball.
problembär

Milhouse hat geschrieben:nunja einlesen tue ich die mit

Code: Alles auswählen

open("wortliste.dat", "r")
Das liest so aber leider gar nichts ein. Außerdem brauchst Du das, was open() zurückgibt, nämlich ein Filehandle.
Lies bitte erst mal, was das ist, wie Du es erhältst und wie Du damit arbeitest (davon lesen, es schließen, usw.).

Außerdem hast Du meine zweite Frage nach dem Füllen eines Dictionaries noch nicht beantwortet.
Ich meine, es hätte ja wohl keinen Sinn, wenn man die Daten irgendwie in das gewünschte Dictionary bekommt, aber dann gar nicht weiß, wie man mit Dictionaries arbeitet. Mußt Du zugeben, oder?
bb1898
User
Beiträge: 219
Registriert: Mittwoch 12. Juli 2006, 14:28

Milhouse hat geschrieben:naja das ist mein ansatz. aber wie soll ich denn nun weitermachen wenn ich nichtmal weiß wie ich wörter aus einer datei in ein dictionary packe und sie die richigen values haben?
Bin nunmal noch Anfänger.
Aus diesem Zustand kommt man immer nur schrittchenweise raus, aber ganz ohne Schrittchen geht's auch nicht. Vielleicht hilft eine kleine Zerlegung des Problems:

Code: Alles auswählen

Als erstes zwei leere Dictionaries erzeugen und ihnen die Namen Frequenz und Geschlecht geben.

Datei öffnen und dem dabei erzeugten Dateiobjekt einen Namen geben (ersteres hast Du ja schon, zweiteres fehlt noch - aber ohne das kommst Du nicht zum nächsten Schritt). Nennen wir das Ding mal rohdaten.

Für jede Zeile aus rohdaten Folgendes machen:

    Die Zeile an den Tabulatorzeichen auftrennen in drei Teile, denen wir die Namen aktuelles_wort, aktuelles_geschlecht, aktuelle_frequenz geben.

    Dem Dictionary Geschlecht einen neuen Eintrag mit dem Schlüssel aktuelles_wort und dem Wert aktuelles_geschlecht zufügen.

    Mit dem Dictionary Frequenz analog verfahren.

Die Datei wieder schließen.
So. Und jetzt jeden Punkt dieser Liste mit Hilfe von Tutorial, Lehrbuch (falls vorhanden) und Dokumentation lösen, bei Bedarf konkrete Fragen dazu stellen. Wenn das so weit läuft, und erst dann, können die Feinheiten kommen, als da wären:

- So wie angedeutet funktioniert das nur, wenn jede Zeile Deiner Datei mit einem anderen Wort anfängt. Ist das nicht gegeben, braucht es zusätzliche Überlegungen zu dem Punkt "neuer Eintrag mit dem Schlüssel aktuelles_wort".

- Anständiges und hinreichend modernes Python erlaubt, die Datei so zu öffnen, dass sie sich am Ende automatisch wieder schließt (Stichwort "with").

- Zum Lesen einer Datei, deren Zeilen durch feste Feldtrenner (hier die TABs) gegliedert sind, kann man fortgeschrittenerweise auch das Modul csv benutzen. Ob das im gegebenen Fall Overkill ist, darüber kann man streiten.

Aber diese drei Dinge kriegen wir später.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und warum erwähnt keiner das CSV-Modul? Also ich sehe hier ganz deutlich tab separated values.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

@Leonidas: Letzter Spiegelstrich in dem Beitrag vor Deinem. ;-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Oh, Fail :oops:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Leonidas hat geschrieben:Oh, Fail :oops:
Ach quatsch. Man kann so etwas nicht oft genug erwähnen ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten