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