Frage zu Python Code?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Nein, Du machst in Zeile 8 keine Kopie des Inhalts von row, sondern eine Kopie auf die Referenz. Das heißt row und new_row bezeichnen dasselbe Objekt (Hier: eine Liste). Dann tauscht Du das Element[4] dieser einen Liste durch ein anderes aus.

Du könntest stattdessen nur die Dich interessierende Spalte bearbeiten:

new_row = row[4] #Jetzt enthält new_row nur einen String und keine Liste mehr

#Dann machst Du Deinen Split mit new_row statt new_row[4]

Und Deine print-befehle

print(new_row)

print(row[4])

Und natürlich wird auch Deine Änderung an row[4] nicht in die Datei geschrieben. Es wird der Wert im Speicher verändert, der das Eingelese enthält.

redsky 
Fragesteller
 09.02.2022, 21:09

Danke für die Antwort :). Ich komne erst morgen wieder dazu mich damit auseinanderzusetzen, wollte aber dennoch schonmal danje sagen :)

0
redsky 
Fragesteller
 14.02.2022, 20:18

mmh ok verstehe, dann muss ich mal recherchieren, wie ich in meine csv Datei reinschreibe.

0

Wo dein Fehler ist, hat Olokun dir ja schon erklärt. Ich würde das Problem so lösen, dass ich alle Werte aus Spalte 4 in eine Liste packe, die mit dem gleichen Trennzeichen in einen String schreibe und wieder extrahiere. Also so:

import csv

all_numbers = list()
with open(r"C:\temp\test.csv") as csv_file:
    for row in csv.reader(csv_file, delimiter=';'):
        # Alle Zahlen aus Spalte 4 in eine Liste packen
        all_numbers.append(row[4])

# Mit Kommas getrennt in einen String schreiben
temp = ", ".join(all_numbers)
# und zusammen mit den vorher schon Komma-getrennten Zahlen wieder in eine Liste schreiben
all_numbers = temp.split(", ")
redsky 
Fragesteller
 09.02.2022, 21:08

Danke für die Antwort :). Ich komne erst morgen wieder dazu mich damit auseinanderzusetzen, wollte aber dennoch schonmal danje sagen :)

0