我正在读取CSV文件,编辑其中的一些值,并尝试编写CSV文件。但是,当我尝试执行时,它说的是imgur链接中的内容。我不确定为什么会这样做。
这是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])
答案 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”旁边就可以保存为文本而不是二进制文件。
非常感谢大家,这真的很有教育意义。