从我一直在做的研究中,这段代码应该将文本写入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'
我找不到为什么会发生这种情况的答案。谁能解释为什么我会收到这个错误?
答案 0 :(得分:2)
使用您创建的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
注意这是假设Python 2.如果你实际上在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)
答案 1 :(得分:0)
您收到该错误的原因是您正在尝试编码列表,而不是字符串。
我制作了一个编写" Name"在包含此脚本的.csv文件中。
wchar_t
在我更改的行上,我添加了额外的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)
的界限。它给我一个错误,我不知道它应该做什么。