list comprehension für Items in einer liste eine .replace(",",'.')

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
telegraph
User
Beiträge: 31
Registriert: Mittwoch 6. November 2013, 10:59

Freitag 16. März 2018, 20:21

Hallo zusammen,

ich habe eine liste mir den Index 0 bis 15 Für die Ich gerne das Komma durch einen Punkt ersetzen würde, damit ich die direct sauber zum plotten sind. Und hab keine Idee wo ich anfangen soll

Code: Alles auswählen

for i in liste_of_csv:
    values = select_values(i)
    #print(values[0:15])
    data_entery_list(values[0:15])


for i in liste_of_csv:
    values = select_values(i)
    #print(values[0:15])
    data_entery_list(values[0:15 ".replace(",",".") "])
Benutzeravatar
noisefloor
User
Beiträge: 2398
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Freitag 16. März 2018, 22:05

Hallo,

ist `liste_of_csv` eine Liste oder eine Liste von Listen?

Die `replace` Methode kannst du nur auf Strings anwenden - sind das alles Strings in der Liste? Und du musst es natürlich elementweise anwenden, `replace` für eine ganze "Zeile" der Liste geht nicht.

Beispiel:

[codebox=pycon file=Unbenannt.txt]>>> my_list = [['12', '1,2'],['13,45', '14,67']]
>>> new_list = []
>>> for sub_list in my_list:
... new_list.append([x.replace(',', '.') for x in sub_list])
...
>>> new_list
[['12', '1.2'], ['13.45', '14.67']]
>>>[/code]

Gruß, noisefloor
telegraph
User
Beiträge: 31
Registriert: Mittwoch 6. November 2013, 10:59

Samstag 17. März 2018, 23:10

Danke noisfloor,

matplotlib kann auch von einer sqlite3 Datenbank die floats plotten auch mit ",". Das hat in den test ohne DB nicht funktioniert.
Benutzeravatar
noisefloor
User
Beiträge: 2398
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Sonntag 18. März 2018, 10:25

Hallo,

für die allermeisten Programmiersprachen sind Floats nun mal 1.23 und nicht 1,23 (also mit Punkt, nicht Komma). Matplotlib kann das auch "nur", weil es da scheinbar einen Konverter gibt, der das für die erledigt. Pandas hat / kann sowas auch.

Grundsätzlich ist es aber eine gute Idee, Floats als 1.23 (also mit Punkt) zu speichern. Für SQLite ist 1,23 sicher auch vom Typ TEXT und nicht REAL - sofern du dir nicht selber einen Konverter geschrieben hast.

Gruß, noisefloor
Antworten