Frage

Nicht wirklich sicher, wie diese Frage zu Wort, also, wenn Sie es nicht besonders verstehen, dann kann ich es erneut versuchen.

Ich habe eine Datei mit dem Namen example.txt und ich möchte dies in mein Python-Programm importieren. Hier werde ich einige Berechnungen tun mit dem, was es enthält und andere Dinge, die nicht relevant sind.

Statt mir diese Datei zu importieren, gehen durch sie line-by-line und Extrahieren von Informationen, die ich will .. kann Python tun es stattdessen? Wie in, strukturieren, wenn ich die .txt richtig (ob es durch eine in jeder Zeile gleich getrennt Schlüssel / Wert-Paare sein), gibt es eine aktuelle Python ‚Weg‘, wo es alles und ich umgehen kann arbeitet mit dem?

War es hilfreich?

Lösung

with open("example.txt") as f:
    for line in f:
        key, value = line.strip().split("=")
        do_something(key,value)

sieht aus wie ein Ausgangspunkt, wenn ich Sie richtig verstehe. Sie müssen Python 2.6 oder 3.x für diese.

Auch ein Blick ist das csv Modul, das kommagetrennte Datei analysieren kann - und man kann ihm sagen = als Separator stattdessen zu verwenden. Dies wird abstrakt in diesem vorherigen Beispiel einige der „Handarbeit“ weg -. Aber es scheint, Ihr Beispiel muss nicht besonders diese Art von Abstraktion

Eine andere Idee:

with open("example.txt") as f:
    d = dict([line.strip().split("=") for line in f])

Nun, das ist knapp und pythonic:)

Andere Tipps

for line in open("file")
    key, value = line.strip().split("=")
    key=key.strip() 
    value=value.strip() 
    do_something(key,value)

Es gibt auch eine andere Methode - Sie eine gültige Python-Datei erstellen (lassen Sie es eine Liste, dict Definition sein oder was auch immer), lesen Sie dessen Inhalt mit

f = open('file.txt', r)
content = f.read() #assuming file isn't too long

Und dann analysiert es einfach:

parsedContent = eval(content)

Sie können jede beliebige Umgebung passieren eval (siehe docs ), so es könnte keinen Zugriff auf Ihre Globals und Einheimische haben. Dies ist böser und falsch, aber in kleinen Programm, das verteilt wird, nicht und nicht bekommen ‚file.txt‘ aus dem Netzwerk oder von sogenanntem böswilligen Benutzer - Sie verwenden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top