Can anyone explain this 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 文件中编写了一个工作代码 "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
在我更改的行上,我添加了一个额外的 [0]
。您的数据列表是嵌套的,这意味着其中有多个列表。
如果要获取"Name"
字符串,需要引用data[0][0]
。这将获取外部列表中的第一个元素,其中是 ["Name", "Score"]
。接下来[0]
得到第一个元素就是那个list,也就是"Name"
.
我用 writer.writerows(data)
去掉了那一行。它向我抛出一个错误,我不知道它应该做什么。
使用您创建的 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)
根据我一直在做的研究,这段代码应该将文本写入 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 文件中编写了一个工作代码 "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
在我更改的行上,我添加了一个额外的 [0]
。您的数据列表是嵌套的,这意味着其中有多个列表。
如果要获取"Name"
字符串,需要引用data[0][0]
。这将获取外部列表中的第一个元素,其中是 ["Name", "Score"]
。接下来[0]
得到第一个元素就是那个list,也就是"Name"
.
我用 writer.writerows(data)
去掉了那一行。它向我抛出一个错误,我不知道它应该做什么。
使用您创建的 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)