Python 有人能解释这个错误吗?属性错误:';列表';对象没有属性';编码';
根据我所做的研究,这段代码应该将文本写入CSV文件Python 有人能解释这个错误吗?属性错误:';列表';对象没有属性';编码';,python,csv,unicode,encoding,utf-8,Python,Csv,Unicode,Encoding,Utf 8,根据我所做的研究,这段代码应该将文本写入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)
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)
起初,它给了我一个编码错误。在查找堆栈溢出后,我发现需要将文本编码为UTF8。所以我试着用X.encode()编码。然后我得到了这个:
f.write(data[0].encode('utf-8'))
AttributeError: 'list' object has no attribute 'encode'
对于为什么会发生这种情况,我找不到答案。有人能解释我为什么会出现此错误吗?您之所以会出现此错误,是因为您试图对列表而不是字符串进行编码 我制作了一个工作代码,用这个脚本在.csv文件中写下“Name”
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
导入csv
name=“X”
score=“Y”
以open('some.csv','wb')作为f:
writer=csv.writer(f)
数据=[[“名称”,“分数”],
[姓名、分数]]
f、 写入(数据[0][0]。编码(“utf-8”)#使用您创建的csv写入程序。不要直接写f
。删除f.写入行:
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)
数据[0]
不是字符串。谢谢您的回答。我还有一个问题:假设name和score变量是用户输入,即input()。如何写入name和score变量,然后向下移动单元格并重复?我以为这是新行,但这似乎起到了其他作用。writerows
获取了如上所示的列表writerow
获取行中元素的单个列表。因此,对于要添加的每一行,只需说writer.writerow([name,score])
。csv.writer
负责添加分隔符和换行符。