Ich habe ein paar .csv
Dateien, die NULL
Werte enthalten, die in der Tabelle als leer angesehen werden. Zum Beispiel:Ersetzen von Werten in einer Liste durch '0'
ID Volts Current Watts
0 383 0
1 383 1 383
2 382 2 764
Diese .csv
Datei eingegeben wird in meinem Programm und in eine Liste wie folgt aus:
with open(inputPath + file) as inFile:
csvFile = csv.reader(inFile)
for row in csvFile:
removeNull(row)
print(row)
, die im wesentlichen jede Zeile in csvFile
nimmt und verwandelt es in eine Liste von Werten, die aussieht so etwas wie dieses:
['0', '383', '', '0']
, ['1', '383', '1', '383]
usw.
Beachten Sie, dass die Werte NULL
jetzt nur leere Zeichenfolgen sind, ''
.
def removeNull(row):
nullIndex = row.index('')
row.remove('')
newRow = row.insert(nullIndex, '0')
return newRow
, die in der Liste (aka Reihe) für leere Strings sehen durch, ''
, und stellen fest, dessen Index als nullIndex
:
Dann in Bezug auf die snipet des Programms über removeNull()
ist definiert als. Entfernt dann die leere Zeichenfolge an dem Index, ersetzt sie durch '0'
und gibt die bearbeitete Liste zurück.
Frage: Was genau ist falsch mit meiner removeNull()
Funktion, die es verursacht nur ersetzt die erste leere Zeichenkette, ''
, in einer Liste? Und wie kann ich es reparieren, so dass es für alle leeren Strings in einer Liste funktioniert?
Zur Verdeutlichung, eine Tabelle wie diese mit nur einenNULL
Wert pro Zeile oder leere Zeichenfolge, sobald in eine Liste konvertiert, funktioniert gut.
ID Volts Current Watts
0 383 0
1 383 1 383
2 382 2 764
['0', '383', '', '0']
funktioniert gut.
Allerdings, wenn ich eine Tabelle wie diese habe, mit mehrereNULL
Werten pro Zeile, es wird nur die erste leere Zeichenfolge in der konvertierten Liste ersetzen und mit dem Rest nichts tun.
ID Volts Current Watts
0 0
1 383 1 383
2 382 2 764
['0', '', '', '0']
nicht gut funktionieren.
'newRow = row.insert (...) 'sieht mir faul aus ...' row.insert' sollte 'None' zurückgeben. – mgilson
Keine separate Funktion erforderlich. Fügen Sie einfach eine Zeile zu Ihrer Schleife hinzu: 'für Zeile in csvFile: Zeile = [Element wenn Element sonst '0' für Element in Zeile] ' –
@StevenRumbalski Es ist nicht sehr offensichtlich, wie ich oben erwähnt habe, aber ich brauche das separate Funktion für andere Elemente des Programms. Aber Ihre Antwort ist völlig richtig, also danke trotzdem. – ThoseKind