Seite 1 von 1

Mehr Dimensioale Arrays

Verfasst: Mittwoch 9. August 2006, 19:44
von mutsch
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

Verfasst: Mittwoch 9. August 2006, 20:08
von gerold
Hi Mutsch!

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

mfg
Gerold
:-)

Re: Mehr Dimensioale Arrays

Verfasst: Mittwoch 9. August 2006, 20:20
von gerold
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
:-)

Re: Mehr Dimensioale Arrays

Verfasst: Mittwoch 9. August 2006, 21:08
von 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.

Re: Mehr Dimensioale Arrays

Verfasst: Donnerstag 10. August 2006, 07:34
von gerold
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
:-)

Verfasst: Sonntag 13. August 2006, 19:37
von mutsch
Vielen Dank für die Tipps