Seite 1 von 1

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

Verfasst: Freitag 16. März 2018, 20:21
von telegraph
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(",",".") "])

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

Verfasst: Freitag 16. März 2018, 22:05
von noisefloor
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

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

Verfasst: Samstag 17. März 2018, 23:10
von telegraph
Danke noisfloor,

matplotlib kann auch von einer sqlite3 Datenbank die floats plotten auch mit ",". Das hat in den test ohne DB nicht funktioniert.

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

Verfasst: Sonntag 18. März 2018, 10:25
von noisefloor
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