簡體   English   中英

誰能解釋這個錯誤? AttributeError:“列表”對象沒有屬性“編碼”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM