在Python 3中编写csv

时间:2014-12-15 17:36:52

标签: python csv python-3.x

我是Python的初学者,我想要做的就是删除表中某些卖点的空间。 但由于错误,我不能写csv。 我已经在stackoverflow中检查了几个相关帖子,但仍然无法纠正我的电话。

错误

第27行,在 csvWriter.writerow(更正)
TypeError:'str'不支持缓冲区接口

代码

import csv

# Read CSV
csvfile = '/Users/Study/Data/WGI/forPython.csv'
f = open(csvfile, 'r', newline='')
data = csv.reader(f)

# 
g = open('/Users/Study/Data/WGI/WGI_Data_Renamed_Python.csv', 'ab')
csvWriter = csv.writer(g)

# 
corrected = []

count = 0

# 
for row in data:
    corrected.append([])             
    corrected[count] = str.rstrip(row[0])
    count = count + 1

print(corrected)

# 
csvWriter.writerow(corrected)
g.close()

1 个答案:

答案 0 :(得分:2)

显然,Python 3 doesn't support binary output streams中的csv.writer。文档中没有提到这一点,更糟糕的是,它总是从Python 2推荐向后,始终用b打开底层文件。

幸运的是,修复很容易:只需以文本模式而不是二进制文件打开文件。 docs还建议您在打开文件时指定newline='',这样您也可以这样做。

g = open('/Users/Study/Data/WGI/WGI_Data_Renamed_Python.csv', 'a', newline='')
csvWriter = csv.writer(g)