[英]Can anyone tell my why I'm getting the error [AttributeError: 'list' object has no attribute 'encode']
[英]Can anyone explain this error? AttributeError: 'list' object has no attribute 'encode'
根據我一直在做的研究,此代碼應將文本寫入CSV文件。
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)
起初,它使我感到編碼錯誤。 搜尋Stack Overflow之后,我發現了一些有關需要將文本編碼為UTF8的知識。 因此,我嘗試使用X.encode()進行編碼。 然后我得到了這個:
f.write(data[0].encode('utf-8'))
AttributeError: 'list' object has no attribute 'encode'
我找不到答案為什么會這樣。 誰能解釋為什么我會收到此錯誤?
使用您創建的csv編寫器。 不要直接寫f
。 刪除f.write
行:
import csv
name = "X"
score = "Y"
with open('some.csv', 'wb') as f:
writer = csv.writer(f)
data = [["Name", "Score"],
[name,score]]
writer.writerows(data)
some.csv
內容:
Name,Score
X,Y
請注意,這是假設使用Python2。如果您實際上是使用Python 3,並且正在編寫非ASCII字符,則open
具有不同的參數。
#coding:utf8
import csv
name = "馬克"
score = "Y"
with open('some.csv', 'w', encoding='utf8', newline='') as f:
writer = csv.writer(f)
data = [["Name", "Score"],
[name,score]]
writer.writerows(data)
出現該錯誤的原因是因為您嘗試對列表而不是字符串進行編碼。
我編寫了一個工作代碼,使用此腳本在.csv文件中寫入了“名稱”。
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][0].encode('utf-8')) #<-- Change made here
#Removed line here
在更改的那一行,我添加了一個額外的[0]
。 您的數據列表是嵌套的,這意味着其中有多個列表。
如果要獲取"Name"
字符串,則需要引用data[0][0]
。 這將獲得外部列表中的第一個元素,其值為["Name", "Score"]
。 下一個[0]
獲取的第一個元素是該列表,即"Name"
。
我擺脫了writer.writerows(data)
。 這讓我犯了一個錯誤,我不知道該怎么辦。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.