CSV Datei in Python Struktur einlesen

Gast #5067182
Hallo,
Ich habe folgenden CSV Datei

1
raumname;raumid;raumiconstring;deviceid;deviceactualvalueid;devicemaxvalue;deviceminvalues;swipeleftactionstrinq;swiperightactionstring;flyinactionstring;flyoutactionstring;rotateleftactionstring;rotaterightactionstring;deviceiconstring


Und möchte diese in Python in folgende Struktur (Achtung c Syntax 
einlesen:
1
struct raum raeume[]
2

3
struct raum
4

5
{
6
Char raumname[]‚
7
char raumid[],
8
char raumiconstring[]‚
9

10
struct device devices[]
11

12

13
}
14

15
struct device
16

17
( 
18
char deviceid[],
19
char deviceactualvalueid[],
20
double devicemaxvalue,
21
double deviceminvalue,
22
char swipeleftactionstrinq[]‚
23
char swiperightactionstring[]‚
24
char flyinactionstring[],
25
char flyoutactionstring[]‚
26
char rotateleftactionstring[]‚
27
char rotaterightactionstring[]
28
char deviceiconstring []
29
}



Gibt's es jmd der mir helfen könnte, bin leider bei Python relativ 
schlecht.....

Danke
Gast
Ja hatte das nur in c Syntax aufgeschrieben....wie kann ich dann auf die 
einzelnen Elemente zugreifen wenn es mehrere Zeilen gibt?


Und wenn der gleiche raumname öfters Auftritt will ich alle devices 
darunter haben um zugreifen zukönnen bzw.alle devices pro Raum 
aufzulisten.


Zugriff bsp
1
Print Raum[0].raumname 
2

3
For{Raum[0]}
4
List all device
5
End for
(Firma: Père Lachaise)
Nunja, du mußt dir einen Python Datentyp überlegen in welche du die 
Daten packen möchtest. Es gibt u.a.:

- Lists are ordered sequences of values.
- Tuples are ordered, immutable sequences of values. <-- bietet sich 
evtl an
- Sets are unordered bags of values.
- Dictionaries are unordered bags of key-value pairs.

Dazu kannst du durch die Einträge iterieren mit
1
for row in reader:
2
   MachWasMitRow

Zum csv einlesen gibt es mit Sicherheit aus ausführliches Bsp. (ich habe 
nicht danach gesucht)
Gast
csv und struktur passen nicht 1:1 zusammen. entweder packst du etwas 
programmier- und Zuordlogik zwischen csv-lesen und Struktur-schreiben*, 
oder Du packst diese Struktur schon flach in die CSV - halt mit mit 
Redundanzen:
Je csv-Zeile beschreibst du vollständig ein einzelnes Gerät- inkl der 
dazugehörigen Raumdaten.

Egal wie, nun musst du dir einen Kopf machen, welchen Weg du nimmst und 
wie du da langkommst.*

Da wir keine hausaufgaben vorkauen, bleibe ich mal schön ungenau.
Daten in structs einlesen wird mit Python schwierig, da es keine structs 
gibt. Man kann Klassen dafür verwenden, muss man aber nicht.
Für CSV habe ich gerne den dictreader 
(https://docs.python.org/2/library/csv.html#csv.DictReader) genommen.

Inzwischen nutze ich aber kein CSV mehr sondern lese/schreibe direkt 
xlsx mittels openpyxl. Mit den xlsx können die Kollegen dann doch besser 
umgehen als mit csv.
Gast
Ich kann ja ein Liste von tuples erstellen:
1
list_of_tuples = [(1,2),(3,4)]

Wie kann ich dann auf die einzelnen tupels zugreifen? Bzw tuple 
elemente?
(Firma: Père Lachaise)
Zugreifen kannst du so:
1
myTuple = ('raumname', 'raumid', 'raumiconstring', 'deviceid');
2

3
print "First: ", myTuple[0]
4
print "Second+Third: ", myTuple[1:2]

Bevor du nun aber jedes Detail deiner Aufgabe hier rauskitzelst, bemüh' 
doch einfach Literatur oder Google um dir ein paar Grundlagen 
anzueignen. Die "Dive into Python"-Reihe fand ich zum Start sehr 
angenehm zu lesen. Wenn du dann wirklich ein Problem hast und nicht 
weiter kommst, poste deinen konkreten Code.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.