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".
aus datei in dictionaries
-
problembär
Na ja, zeig' doch erstmal,
- wie Du eine Datei einliest und dann,
- wie Du ein leeres Dictionary mit Werten auffüllst.
- wie Du eine Datei einliest und dann,
- wie Du ein leeres Dictionary mit Werten auffüllst.
nunja einlesen tue ich die mit
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.
Code: Alles auswählen
open("wortliste.dat", "r")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.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Dann pack doch mal Wörter aus einem String in ein Dictionary! Ob der später mal aus einer Datei kommt ist ziemlich egal...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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
-
problembär
Das liest so aber leider gar nichts ein. Außerdem brauchst Du das, was open() zurückgibt, nämlich ein Filehandle.Milhouse hat geschrieben:nunja einlesen tue ich die mitCode: Alles auswählen
open("wortliste.dat", "r")
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?
Aus diesem Zustand kommt man immer nur schrittchenweise raus, aber ganz ohne Schrittchen geht's auch nicht. Vielleicht hilft eine kleine Zerlegung des Problems: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.
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 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.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ach quatsch. Man kann so etwas nicht oft genug erwähnenLeonidas hat geschrieben:Oh, Fail
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
