Extrahieren von Daten aus Zeilen einer Textdatei
Brauche ich zum extrahieren von Daten aus Zeilen einer text-Datei. Die Daten name und scoring-Informationen wie folgt formatiert:
Shyvana - 12/4/5 - Loss - 2012-11-22
Fizz - 12/4/5 - Win - 2012-11-22
Miss Fortune - 12/4/3 - Win - 2012-11-22
Diese Datei wird generiert, indem ein weiterer Teil meiner kleinen python-Programm, wo ich Fragen den Benutzer nach dem Namen, lookup der name, den Sie eingeben, um sicherzustellen, dass es gültig ist, aus einer Liste von Namen, und Fragen Sie dann für die kills, Tode, assists, und ob Sie gewonnen oder verloren haben. Dann bitte ich um Bestätigung, und schreiben, dass die Daten in der Datei in einer neuen Zeile, und fügen Sie das Datum am Ende. Der code, der bereitet die Daten:
data = "%s - %s/%s/%s - %s - %s\n" % (
champname, kills, deaths, assists, winloss, timestamp)
Grundsätzlich möchte ich zu Lesen, dass die Daten wieder in einem anderen Teil des Programms und Anzeige der Benutzer und führen Sie Berechnungen mit es wie Mittelwerte über die Zeit für einen bestimmten Namen.
Ich bin neu in python und ich bin nicht sehr erfahren mit der Programmierung im Allgemeinen, so dass die meisten der string aufteilen und formatieren von Beispielen, die ich finde sind einfach zu kryptisch für mich zu verstehen, wie man sich auf ganz das, was ich brauche hier, könnte mir jemand helfen? Ich könnte das format der SCHRIFTLICHEN Daten anders also token zu finden wäre einfacher, aber ich will es einfach direkt in die Datei.
oh Güte ich danke Ihnen allen so viel, schließlich sind einige dieser Aufteilung business macht Sinn! Ich gebe ein paar von diesen versuchen und sehen, was funktioniert am besten für mich, danke! und happy thanksgiving!
InformationsquelleAutor Kassandra | 2012-11-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgenden wird alles gelesen, was in ein Wörterbuch eingegeben, die von Spieler-Namen. Der Wert zugeordnet ist, jeder Spieler ist selbst ein Wörterbuch als ein Datensatz mit benannten Bereichen zugeordnet, die Elemente in ein format für die weitere Verarbeitung geeignet.
Ausgabe:
Alternativ, anstatt halten die meisten Daten, die in Wörterbüchern, die verschachtelte Feld-Zugriff ein wenig umständlich —
info[player]['stats']['kills']
— könnten Sie stattdessen ein wenig mehr advanced "generic" - Klasse, um Sie zu halten, mit denen Sie schreibeninfo2[player].stats.kills
statt.Um zu veranschaulichen, hier ist fast das gleiche mit einer Klasse, die ich genannt habe
Struct
weil es so etwas wie die C-Sprache iststruct
Daten Typ:Ausgabe:
Das wäre
print 'Fizz had %s kills in the game' % info['Fizz']['stats']['kills']
. Gibt es andere Möglichkeiten der Strukturierung Ihrer Daten, zum Beispiel, indem eine oder mehrere benutzerdefinierte Klassen oder vielleicht durch die Verwendung einer integrierten Klasse wienamedtuples
imcollections
Modul. Sie würde Sie schreibeninfo['Fizz'].stats.kills
.oh gosh, das klingt schön, ich werde versuchen, Ihr bisschen hier und sehen, ob ich das bekomme, was ich will, wusste ich nicht, ich könnte es tun, wie, dass ich versucht habe, sich eine ganze neue setup-Funktion in meine Datei zu handhaben, dass, wenn ich könnte nur sein, einige vars, kranke geben, dass ein Versuch, die notation auf namedtuples sieht auch ganz nett ich werde versuchen, dass als gut, nochmals vielen Dank!
Ich zögerte über ob Sie die
Struct
Idee in meine aktualisierte Antwort oder nicht, da es möglicherweise zu Fortgeschritten für jemand, der neu in Python -- aber die alternative wäre gewesen, mehrere benutzerdefinierte Klassen und/odernamedtuples
-- viel mehr code -- also beschloss ich, es wäre das Risiko Wert. Der code dafür ist sehr kurz, denn die Kurse sind intern implementiert mithilfe von Wörterbüchern.ich scheine zu sein, einige Probleme, die die Integration eines neuen Feldes in diesem Wörterbuch. Ich brauche es, um eine
gameid
key bekommen und00523
aus den Linien[00523] Lulu - 6/1/19 - Win - 2012-11-23
, und ich bin nicht sicher, wenn die Wörterbücher es erlauben oder wenn, würde ich es wollen oder nicht, aber ich denke, ich würde wollen, dassstats
eine sortof "Unterordner" vongameid
, so würde das Wörterbuch eine Struktur haben, sortof wiechampion > gameid > stats > kills, deaths, assists, result, date
ich bin mir nicht sicher, ob das getan werden kann, mit diesem Wörterbuch oder nicht.InformationsquelleAutor martineau
Den Sie verwenden möchten split ( ' - ' ), um die Teile, dann vielleicht wieder um die zahlen zu bekommen:
Sollte erhalten Sie alles, was Sie brauchen, in data[] und nums[]. Alternativ können Sie verwenden Sie das re-Modul und schreiben Sie einen regulären Ausdruck für Sie. Dies scheint nicht Komplex genug, obwohl.
InformationsquelleAutor Bas Wijnen
Gibt es zwei Möglichkeiten, Lesen Sie die Daten aus Ihrer Textdatei Beispiel.
Erste Methode
Können Sie python csv Modul, und geben Sie Ihre Trennzeichen
-
.Sehen http://www.doughellmann.com/PyMOTW/csv/
Zweite Methode
Alternativ, wenn Sie nicht möchten, verwenden Sie diese csv-Modul, können Sie einfach die
split
- Methode, nachdem Sie Sie gelesen haben, jede Zeile in der Datei als string.Also in deinem Beispiel oben
champname
tatsächlich das erste Element in derwords
Liste, diewords[0]
.InformationsquelleAutor Calvin Cheng
Wenn Sie testen möchten, mit einer einzigen Zeile, verwenden Sie
for line in ["Miss Fortune - 12/4/3 - Win - 2012-11-22"]:
in einer Liste und nicht die raw-string. Ansonsten werde es Lesen die einzelnen Figuren und versuchen Sie, das extrahieren der Informationen aus.InformationsquelleAutor BoppreH
Erste, brechen Sie die Zeile in der Daten-Fragmente
Zweite, analysieren Ihre Punktzahl
Und schließlich, konvertieren Sie das Datum, string in Datum-Objekt
Nun haben Sie alle Teile, analysiert und normalisiert, um Daten-Typen.
InformationsquelleAutor Dmitry Shevchenko