Kann jemand erklären, diesen Fehler? AttributeError: 'list' - Objekt hat kein Attribut 'encode'
Aus der Forschung, die ich getan habe, sollte dieser code schreibt den text in eine CSV-Datei.
import csv
name = "X"
score = "Y"
with open('some.csv', 'wb') as f:
writer = csv.writer(f)
data = [["Name", "Score"],
[name,score]]
f.write(data[0].encode('utf-8'))
writer.writerows(data)
Zuerst, es warf mir einen encoding-Fehler. Nach der Jagd auf Stack Overflow, ich habe etwas gefunden, über dass dem der text codiert in UTF8. Also habe ich versucht, die Verschlüsselung mit X. encode(). Dann bekam ich dieses:
f.write(data[0].encode('utf-8'))
AttributeError: 'list' object has no attribute 'encode'
Ich kann nicht finden, eine Antwort auf die Frage, warum dies geschieht. Kann mir jemand erklären, warum ich diese Fehlermeldung bekommen?
data[0]
ist["Name", "Score"]
kein string.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die csv-writer erstellt. Schreiben Sie nicht
f
direkt. Fallen dief.write
Linie:Inhalt
some.csv
:Hinweis: dies wird vorausgesetzt, Python-2. Wenn Sie tatsächlich auf Python 3, und schreiben nicht-ASCII-Zeichen, die
open
hat verschiedene Parameter.writerows
nimmt eine Liste von Listen wie oben.writerow
nimmt eine einzige Liste der Elemente in der Zeile. So würden Sie nur sagenwriter.writerow([name,score])
für jede Zeile, die Sie hinzufügen möchten. diecsv.writer
kümmert sich um das hinzufügen von Trennzeichen und Zeilenumbrüche.Dem Grund, dass Sie bekommen, dass Fehler, weil Sie versuchen zu codieren, eine Liste, nicht einen string.
Machte ich einen funktionierenden code, der schrieb, "Name" ein .csv-Datei mit diesem Skript.
Auf die Zeile, die ich geändert habe, habe ich eine zusätzliche
[0]
. Sie Daten, die Liste ist verschachtelt, was bedeutet, dass es mehr als eine Liste innerhalb der it.Wenn Sie wollen, um die
"Name"
string, müssen Sie die Referenzdata[0][0]
. Das wird das erste element der äußeren Liste, mit ist["Name", "Score"]
. Die nächste[0]
bekommt das erste element dieser Liste, die"Name"
.Entledigte ich mich der Zeile mit
writer.writerows(data)
. Er warf mir ein Fehler und ich hatte keine Ahnung, was es tun sollte.