Mehr Dimensioale Arrays

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mutsch
User
Beiträge: 13
Registriert: Mittwoch 9. August 2006, 19:33

Hallo Leute!!! Bin auch ein ziemliches Greenhorn in Sachen Pyton.
Ich Lese mit meinem Pythocode ein CSV File aus...

Code: Alles auswählen

Filename="C:\TAGURX.csv"
#Init reader
reader = csv.reader(open(Filename , "rb")) 
#Read Dat5a from CSV File
for row in reader:
        #Split row string in more strings
        SingleRowValues= str(row.pop(0)).split(';') 
Soweit ist die Sache ja ganz einfach...
Ich möchte dann die einzelnen SingleRowValues[0] in einen Mehrdimmensionalen Array schreiben.

DATA[ROW_INDEX][VALUE_INDEX]
Wie tu ich da am besten?

Edit by Gerold: Code in Code-Tags gesetzt
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi Mutsch!

Willkommen und hier der obligatorische Hinweis auf die FAQ:
http://www.python-forum.de/faq.php#21 ;-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

mutsch hat geschrieben:Ich möchte dann die einzelnen SingleRowValues[0] in einen Mehrdimmensionalen Array schreiben.
Hi Mutsch!

Wie sieht deine CSV-Datei aus? Sind die Werte mit "," oder mit ";" getrennt? Egal, da du den Trenner angeben kannst. Es gibt mehrere Möglichkeiten, aber diese hier dürfte für einen Anfänger am Einfachsten sein.

Code: Alles auswählen

import csv

filename = "xxx.csv"

reader = csv.reader(open(filename , "r"), delimiter = ";")

rows = []
for row in reader:
    if row: # Also nur, wenn auch wirklich etwas in der Zeile steht
        rows.append(row)

print rows
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BlackJack

gerold hat geschrieben:

Code: Alles auswählen

import csv

filename = "xxx.csv"

reader = csv.reader(open(filename , "r"), delimiter = ";")

rows = []
for row in reader:
    if row: # Also nur, wenn auch wirklich etwas in der Zeile steht
        rows.append(row)

print rows
Kann es denn passieren das in einer Zeile nichts steht!?

Ansonsten wäre es kürzer wenn man die Schleife weglässt und einfach ``rows = list(reader)`` schreibt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

BlackJack hat geschrieben:Kann es denn passieren das in einer Zeile nichts steht!?
Hi BlackJack!

Also, ich sehe so etwas ziemlich oft. Meist ist es ein Zeilenumbruch am Ende der Datei, der Schwierigkeiten bereitet.
Da ich so oft CSV-Dateien mit leeren Zeilen sehe, verstehe ich nicht warum es kein Flag gibt, das dem Reader mitteilt, dass man nur Datenzeilen auslesen möchte. Auch das Ausfiltern von Kommentarzeilen sollte, meines Erachtens, direkt in den Reader eingebaut sein.

Um dieses Problem zu umgehen, arbeite ich meist so. (allerdings ist das nicht unbedingt Anfängerfreundlich):

Code: Alles auswählen

import csv

filename = "xxx.csv"

f = file(filename , "r")

csvlines = ( line for line in f if line and not line.startswith("#") )
reader = csv.reader(csvlines, delimiter = ";")

rows = list(reader)
print rows

f.close()
lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
mutsch
User
Beiträge: 13
Registriert: Mittwoch 9. August 2006, 19:33

Vielen Dank für die Tipps
Antworten