繁体   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