Gibt es eine Möglichkeit das Datum und die Zahlen aus einer Textdatei mit diesem Format
Code: Alles auswählen
01.01.2001,1,2,3,4,5
01.02.2001,6,7,8,9,10
01.03.2001,11,12,13,14,15
Oder eine brauchbare Alternative?
Schanke Döhn
Code: Alles auswählen
01.01.2001,1,2,3,4,5
01.02.2001,6,7,8,9,10
01.03.2001,11,12,13,14,15
Code: Alles auswählen
import datetime
def str2date(string):
day, month, year = map(int, string.split('.'))
return datetime.date(year, month, day)
Code: Alles auswählen
import csv
reader = csv.reader(open("zahlen.txt", "r"))
list=[]
for row in reader:
list.append(row)
print list
Man sollte besser keine Namen von eingebauten Funktionen "missbrauchen". Hier bindest Du die `list()` Funktion an eine Liste. Und gerade in diesem Fall kann man sie benutzen um die Schleife los zu werden:m3t3or hat geschrieben:ich habs so wie ich es wollteCode: Alles auswählen
import csv reader = csv.reader(open("zahlen.txt", "r")) list=[] for row in reader: list.append(row) print list
Code: Alles auswählen
rows = list(reader)
Code: Alles auswählen
import csv
reader = csv.reader(file("zahlen.txt"))
#liste=[]
rows = list(reader)
#for zeile in rows:
# liste.append(zeile)
#print liste
print rows
Code: Alles auswählen
new = []
for line in reader:
new.append(whatever)
Code: Alles auswählen
new = [whatever for line in reader]
Das macht man mit der `close()` Methode des Datei-Objekts.m3t3or hat geschrieben:1.) Ist die Textdatei noch geöffnet, oder wird sie, nach dem Zugriff auf rows wieder geschlossen? Sollte die Datei geöffnet sein, wie schließe ich sie wieder?
Man kann z.B. eine Funktion schreiben die eine einzelne Zeile wie sie eingelesen wird, also als Liste mit Zeichenketten, in eine Liste mit einem Datum und ganzen Zahlen umwandelt. Die Funktion braucht man dann nur noch auf die Elemente des `reader` Objekts anwenden.2.) Der Inhalt der Liste sind Strings. Gibt es ne Möglichkeit, die Strings gleich beim einlesen in das richtige Datenformat(Datum, Integer) zu bringen? Oder ist es sinnvoll, die Liste mit einer Schleife zu verarbeiten, welche die einzelnen Listenelemente im richtigen Datenformat in eine neue Liste schreibt?
Code: Alles auswählen
import csv
import datetime
def convert_row(row):
day, month, year = map(int, row[0].split('.'))
result = [datetime.date(year, month, day)]
result.extend(map(int, row[1:]))
return result
csv_file = open('test.csv', 'rb')
reader = csv.reader(csv_file)
data = map(convert_row, reader)
csv_file.close()
print data
Um Deine Frage endlich mal zu beantworten: ja, die Datei ist am Ende dieses Codeabschnitts noch geöffnet. Und sie bleibt es so lange, bis das interne file-Objekt zerstört (dann beim Aufräumen), oder die Datei eben explizit geschlossen wird.m3t3or hat geschrieben:Nach längerer Rumprobiererei komme ich einfach nicht drauf:
1.) Ist die Textdatei noch geöffnet, oder wird sie, nach dem Zugriff auf rows wieder geschlossen? Sollte die Datei geöffnet sein, wie schließe ich sie wieder?