2016-10-28 10 views
1

Wie kann ich ein Wörterbuch aus einer Textdatei erstellen? Ich möchte nichts Besonderes in der Textdatei selbst, weil ich direkt von Python aus in die Datei schreiben möchte.Wörterbuch aus Text erstellen Datei

Textdatei:

Soda $2 Burger $5 Shake $4 Fries $3 

Code:

file = 'file.dat' 
filer = open(file, "r") 
food = {} 
for i in filer: 
    x = i.split(" ") 
    for i in range(len(x)): 
     if i %2 == 0: 
      a = x[i] 
     else: 
      b = x[i] 
     food[a] = b 
+0

verwenden Oh, es funktioniert! – Indigo2003

+0

Muss die Datei so formatiert werden? –

+0

Vorzugsweise, ja. Aber ich kann es ändern. Ich wollte es einfach, weil ich später darauf schreiben würde. – Indigo2003

Antwort

1

Oh shoot it works!

Nein, sollte es nicht. Es sollte Ihnen eine Meldung "NameError: Name 'b' ist nicht definiert" geben. Wenn 'a' gesetzt ist, dann ist 'b' entweder nicht gesetzt oder von der vorherigen Interaktion übrig geblieben, wenn food[a] = [b] passiert. Ein pythonic Weg, dies zu nähern könnte sein:

file_name = 'file.dat' 

food = {} 

with open(file_name) as file: 
    for line in file: 
     pairs = line.split() 
     food.update(zip(pairs[0::2], pairs[1::2])) 

PRODUZIERT

{'Shake': '$4', 'Fries': '$3', 'Soda': '$2', 'Burger': '$5'} 
+0

Danke! Was macht die 'mit' Aussage? Und was macht 'zip'? Und 'Paare'? Und das '' '? Bitte erläutern Sie Ihre Antwort. Ich bin ein Python Noob. – Indigo2003

+0

Auch es funktionierte für mich, weil ich bereits a und b – Indigo2003

+0

@ Indigo2003 definiert hatte, ist die 'mit' Anweisung ein OOP-Operator, der den Bereinigungscode des Objekts (Datei) aufruft - dh er ruft' close() 'auf der Datei auf Der Block ist verlassen, also müssen wir uns nicht daran erinnern. 'pairs' ist einfach der Name meiner Variablen und ist beliebig. 'zip()' nimmt zwei Listen und verschränkt sie, wie ein Kleiderreißverschluss. Die '[x :: y]' -Notation ist eine Scheibe, in der 'Paare [0 :: 2]' die geraden Elemente und 'Paare [1 :: 2]' die ungeraden Elemente sind. – cdlane

0

Wenn Sie das Format steuern, sollten Sie nur schießen json

import json 

d = {'Shake': '$4', 'Fries': '$3', 'Soda': '$2', 'Burger': '$5'} 
with open('file.dat', 'w') as f: 
    json.dump(d, f) 

with open('file.dat', 'r') as f: 
    print json.load(f) 
+0

Was ist 'mit' und 'as' und' load' – Indigo2003

+0

'mit' und' as' ist die Syntax für * Kontextmanager *. Dies ist die bevorzugte Methode zum Öffnen von Dateien, um sicherzustellen, dass sie ordnungsgemäß geschlossen sind. 'json.load' und' json.dump' lesen und speichern Python-Objekte (z. B. Listen, dicts) in einer Datei als json. Es ist dokumentiert [hier] (https://docs.python.org/2/library/json.html#json.load). –

Verwandte Themen