erstellen Sie eine Liste von Tupeln aus einer csv-Datei
Ich bin python-Anfänger kämpfen, um Sie zu erstellen und speichern Sie eine Liste mit Tupeln aus einer csv-Datei in python.
Den code hab ich für jetzt ist:
def load_file(filename):
fp = open(filename, 'Ur')
data_list = []
for line in fp:
data_list.append(line.strip().split(','))
fp.close()
return data_list
und dann möchte ich die Datei speichern
def save_file(filename, data_list):
fp = open(filename, 'w')
for line in data_list:
fp.write(','.join(line) + '\n')
fp.close()
Leider, mein code gibt eine Liste von Listen, nicht eine Liste von Tupeln,... gibt es eine Möglichkeit zum erstellen einer Liste mit mehreren Tupeln ohne mithilfe von csv-Modul?
- Es sei denn, ich bin fehlt etwas subtilen Punkt - alles, was Sie tun, ist das kopieren der Datei?
- warum nicht mit dem csv-Modul ??
InformationsquelleAutor kate88 | 2013-03-25
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
split
gibt eine Liste, wenn Sie möchten, dass ein Tupel, konvertieren Sie es in ein Tupel:Bitte verwenden Sie die
csv
Modul.Erste Frage: warum ist eine Liste von Listen schlecht? Im Sinne von "duck-typing", das sollte in Ordnung sein, so dass du vielleicht noch einmal darüber nachdenken.
Wenn Sie wirklich brauchen, eine Liste von Tupeln - nur kleine änderungen nötig sind.
Ändern Sie die Zeile
zu
Das ist es.
Wenn Sie jemals wollen, um loszuwerden, benutzerdefinierten code (weniger code ist besser code), könnten Sie kleben an der csv-Modul. Würde ich dringend empfehlen, über wie viele library-Methoden wie möglich.
Zeigen-off einige erweiterte Python-features: Ihre
load_file
-Methode könnte auch so Aussehen:Ich verwenden einer list-comprehension hier, es ist sehr übersichtlich und leicht zu verstehen.
Zusätzlich verwende ich die
with
-Anweisung, die in der Nähe Ihre Datei-Zeiger, auch wenn eine Ausnahme aufgetreten ist, in Ihrem code. Verwenden Sie bitte immerwith
beim arbeiten mit externen Ressourcen, wie Dateien.Nur wickeln "tuple()" rund um die
line.strip().split(',')
und Sie erhalten eine Liste von Tupeln. Sie können sehen, Sie in Aktion in dieses runnable-gist.