不知道如何解决这个错误

时间:2014-11-14 06:26:29

标签: python csv row

我正在读取CSV文件,编辑其中的一些值,并尝试编写CSV文件。但是,当我尝试执行时,它说的是imgur链接中的内容。我不确定为什么会这样做。

http://imgur.com/akXeouk

这是Excel / CSV文件:

https://onedrive.live.com/redir?resid=45E225BF1E0ACB4%21606

import csv

f = open('project survey.csv')

csv_f = csv.reader(f)

def encoder(x):

    for row in csv_f:
        if row[2] == "2018":
            row[2] = 1.0
        elif row[2] == "2017":
            row[2] = 2.0
        elif row[2] == "2016":
            row[2] = 3.0

        print (row)         
    return row  


new_data = []
for row in encoder(csv_f):
   new_data.append(row)

print (new_data)

f = open('new_data.csv','wb')

output = csv.writer(f)

for row in new_data:

    output.writerow([row])

2 个答案:

答案 0 :(得分:0)

writerow用于编写序列(列表或元组)来归档而不是单个变量。 你给了一个值'row'作为writerow的参数,它实际上应该是一个序列。

for row in new_data:
   output.writerow([row])

  output.writerow(new_data)

答案 1 :(得分:-1)

在你的帮助下,我终于想出了如何解决这个问题。

这是新代码:

import csv
f = open('project survey.csv')
csv_f = csv.reader(f)

new_data = []

def encoder(x):
    for row in csv_f:
        if row[24] == "Other":
             row[24] = 1.0
        elif row[24] != "Other":
             row[24] = 0
        new_data.append(row)
    return new_data

encoder(csv_f)
print(new_data)

f = open('new_data.csv','wt')
output = csv.writer(f)

for row in new_data:
    output.writerow(row)

f.close()

为了返回而不打印我必须创建一个新的空列表来追加所有内容。

起初它没有写入new_data.csv,因为python 3需要你指定编码。幸运的是,只需将“wt”放在“new_data.csv”旁边就可以保存为文本而不是二进制文件。

非常感谢大家,这真的很有教育意义。