.csv Trennzeichendilemma

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.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Seufz. Das hilft hier doch keinem, so eine Angabe. Offensichtlich ist data nicht das, was du erwartest. Also zeig uns doch (und dir) wie es WIRKLICH aussieht. Dann klaert sich auch, warum der csvreader da etwas anderes interpretiert, als du es erwartest.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Falls das nicht klar gewesen sein sollte: pack einfach ein print(data) vor deinen Versuch, auf ein bestimmtes Element zuzugreifen. Dann sollte man das schon erkennen koennen. Wenn man es schoener machen will, nimmt man

Code: Alles auswählen

import pprint

pprint.pprint(data)
Hans-Uwe
User
Beiträge: 56
Registriert: Dienstag 16. Januar 2018, 16:26

Mit dieser Methode klappt alles, nur ausschließlich der String wird nicht an die Simulationssoftware übergeben - ausgelesen wird er:

Code: Alles auswählen

import csv

werte = []

reader = csv.reader(open("H:\\Simulation\\Phosphor_Kennwerte2.csv"), delimiter=';')
 
for row in reader:
    werte.append(row)


##Phosphor Properties
particleindex = float(werte[3][3])
size = float(werte[4][3])
density = float(werte[5][3])
minthresh = float(werte[6][3])
bluemin = float(werte[7][3])
bluemax = float(werte[8][3])
fluorescenttrans = float(werte[9][3])
scattertrans = float(werte[10][3])
wavelengthshift = str(werte[11][3])
meanfreepath = float(werte[12][3])
Hans-Uwe
User
Beiträge: 56
Registriert: Dienstag 16. Januar 2018, 16:26

__deets__ hat geschrieben: Freitag 29. Juni 2018, 14:15 Falls das nicht klar gewesen sein sollte: pack einfach ein print(data) vor deinen Versuch, auf ein bestimmtes Element zuzugreifen. Dann sollte man das schon erkennen koennen. Wenn man es schoener machen will, nimmt man

Code: Alles auswählen

import pprint

pprint.pprint(data)
pprint:

Code: Alles auswählen

[['Werkstoff Kennwerte Phosphor;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;;;;;;NSCE;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 ['Zemax Optic Studio:;;;Wert;Kommentar;;;;Ref. Object;Inside of;X Position;Y Position;Z Position',
  ';Tilt About X;Tilt About Y;Tilt About Z;Material;Front R;Z Length;Back R;;;;;;;;;;;;;;'],
 ['Volume Physics',
  ' Cylinder Volume;;Particle Index;1.8;Einheitenlos;;;Cylinder V.;0;0;0;0;0;0;0;0;;1;1.733;3;;;;;;;;;;;;;;'],
 [';;Size;1;Partikelradius [µm];;;;;;;;;;;;;X1 Half Width;Y1 Half Width;Z Length;X2 Half Length;Y2 Half Length;Front X Angle;Front Y Angle;Rear X Angle;Rear Y Angle;;;;;;;;'],
 [';;Density;4.56;Dichte [g/cm\xb3];;;Rectangle V.;0;1;0;0;0;0;0;0;;0.7;0.7;0.25;0.7;0.7;0;0;0;0;;;;;;;;'],
 [';;Min. thresh.;0.001;;;;;;;;;;;;;;# Layout Rays;# Analysis Rays;Power (Watts);Wavenumber;Color #;X Half Width;Y Half Width;Source Distance;Cosine Exponent;Gauss Gx;Gauss Gy;Source X;Source Y;;;;'],
 [';;Blue min.;0.46;Mindestwellenlänge [µm];;;Source Rect.;0;2;0;0;0;0;0;0;;50;100000;1;1;0;0.7;0.7;0.1;0;1;1;0;0;;;;'],
 [';;Blue max.;0.48;Maximale Wellenlänge [µm];;;;;;;;;;;;;X Half Width;Y Half Width;# X Pixels;# Y Pixels;Data Type;Color;Smoothing;Scale;Plot Scale;Front Only;PSF Wave;X Angle Min;X Angle Max;Y Angle Min;Y Angle Max',
  ';Polarisation;Mirroring'],
 [';;Fluorescent trans.;1;;;;Detector Rec.;0;0;0;0;1.743;0;0;0;ABSORB;3;3;200;1;0;0;0;0;0;0;0;-90;90;-90;90;0;0'],
 [';;Scattering trans.;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;Wavelength Shift;"1', '2', '1;";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;Mean Free Path;2;Mittlere freie Weglänge [mm];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;Waveleng 1;0.47;Wellenlänge 1 [nm];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;Waveleng 2;0.57;Wellenlänge 2 [nm];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';Ergebnis:;Total Power;0.8044195770381157;Watt [W];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 ['Abaqus CAE:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';YAG:Ce Phosphor;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;Density;4560;Dichte [kg/m\xb3];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;Thermal conductivity;11;Wärmeleitfähigkeit [W/(m K)];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;Specific Heat;590;spez. Wärmekapazität [J/(kg K)];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';Aluminium;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;Density;2700;Dichte [kg/m\xb3];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;Thermal conductivity;230;Wärmeleitfähigkeit [W/(m K)];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;Specific Heat;910;spez. Wärmekapazität [J/(kg K)];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';GaN;;;;;;;BC_Source;393.15;Temperatur [K];;;;;;;;;;;;;;;;;;;;;;;'],
 [';;Density;6100;Dichte [kg/m\xb3];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;Thermal conductivity;130;Wärmeleitfähigkeit [W/(m K)];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;Specific Heat;490;spez. Wärmekapazität [J/(kg K)];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';Ergebnisse:;TEMP_min;288.186;Temperatur [K];;;;;;;;;;;;;;;;;;;;;;;;;;;;;'],
 [';;TEMP_max;394.102;Temperatur [K];;;;;;;;;;;;;;;;;;;;;;;;;;;;;']]
Müsste also passen, da data[3][3] 1.8 enthält.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Also ich sehe da eher, dass das ueberhaupt nicht passt. Kannst du mal die originale Datei irgendwo hinpacken (pastebin.com) und verlinken? Dann kann man sich dass mal ansehen.
Hans-Uwe
User
Beiträge: 56
Registriert: Dienstag 16. Januar 2018, 16:26

Benutzeravatar
__blackjack__
User
Beiträge: 14027
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Hans-Uwe: Die Datei passt nicht zum gezeigten Verhalten beim gezeigten Code. Also entweder hast Du nicht den Code ausgeführt den Du gezeigt hast, oder den hast Du auf einer anderen Datei ausgeführt.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Benutzeravatar
kbr
User
Beiträge: 1506
Registriert: Mittwoch 15. Oktober 2008, 09:27

@Hans-Uwe: Deine data-Werte kommen von hier:

Code: Alles auswählen

reader = csv.reader(x, delimiter=';')
data = list(csv.reader(x))
Du liest also zunächst korrekt ein, dann schmeisst Du alles weg und liest erneut mit dem Default-Separator ','. Daher ergibt data[3][3] einen IndexError, weil da eben nichts steht.

Ab hier verwendest Du csv.reader() richtig

Code: Alles auswählen

import csv

werte = []

reader = csv.reader(open("H:\\Simulation\\Phosphor_Kennwerte2.csv"), delimiter=';')
scheinst aber mit den gelieferten Objekten (zunächst 'reader' und später 'werte') nicht zurecht zu kommen und postest hier die älteren Inhalte von data. Du wirfst da einiges durcheinander.
Hans-Uwe
User
Beiträge: 56
Registriert: Dienstag 16. Januar 2018, 16:26

__blackjack__ hat geschrieben: Freitag 29. Juni 2018, 14:56 @Hans-Uwe: Die Datei passt nicht zum gezeigten Verhalten beim gezeigten Code. Also entweder hast Du nicht den Code ausgeführt den Du gezeigt hast, oder den hast Du auf einer anderen Datei ausgeführt.
@__blackjack__: Ich bin mir ziemlich sicher, dass ich immer genau beschrieben habe was ich gemacht habe. Dieser Code liefert einen IndexError; Phosphor-Kennwerte2.csv enthält exakt die Werte die ich oben als Liste mit pprint ausgegeben habe.

Code: Alles auswählen

import csv

with open('H:\\Simulation\\Phosphor_Kennwerte2.csv', 'rb') as x:
    reader = csv.reader(x, delimiter=';')
    data = list(csv.reader(x))
    print(data[3][3])
kbr hat geschrieben: Freitag 29. Juni 2018, 14:58 Ab hier verwendest Du csv.reader() richtig

Code: Alles auswählen

import csv

werte = []

reader = csv.reader(open("H:\\Simulation\\Phosphor_Kennwerte2.csv"), delimiter=';')
scheinst aber mit den gelieferten Objekten (zunächst 'reader' und später 'werte') nicht zurecht zu kommen und postest hier die älteren Inhalte von data. Du wirfst da einiges durcheinander.
@kbr: Ich verstehe nicht ganz was du meinst. 'reader' ist der reader, der die Werte in die Liste 'werte' überträgt. Die Inhalte von data waren nie alt, die waren und sind immernoch die selben. Oder verstehe ich dich jetzt falsch? Mit der zweiten Methode, zu der du auch sagst, dass ich sie richtig verwenden, klappt ja auch alles wunderbar. Einzig und allein der String für 'wavelengthshift' wird (wieso auch immer?) einfach nicht an die Simulationssoftware übergeben. Die anderen Parameter werden wunderbar verbarbeitet.
Zuletzt geändert von Hans-Uwe am Freitag 29. Juni 2018, 15:24, insgesamt 1-mal geändert.
Hans-Uwe
User
Beiträge: 56
Registriert: Dienstag 16. Januar 2018, 16:26

__blackjack__ hat geschrieben: Freitag 29. Juni 2018, 14:56 @Hans-Uwe: Die Datei passt nicht zum gezeigten Verhalten beim gezeigten Code. Also entweder hast Du nicht den Code ausgeführt den Du gezeigt hast, oder den hast Du auf einer anderen Datei ausgeführt.
Hier ist zu sehen, was eins zu eins passiert:

https://ibb.co/m7KxNJ
Benutzeravatar
__blackjack__
User
Beiträge: 14027
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Hans-Uwe: Du verwendest den `reader` bei dem Du den `delimiter` angibst nicht, sondern erstellst noch einen neuen:

Code: Alles auswählen

with open('Downloads/Phosphor_Kennwerte2.csv', 'r') as x:
    reader = csv.reader(x, delimiter=';')  # Der hier wird nicht verwendet.
    data = list(csv.reader(x))  # Hier wird noch mal ein neuer erstellt und verwendet.
    print(data[3][3])
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Antworten