TypeError:“str”不支持缓冲区接口issu

2024-10-01 01:45:33 发布

您现在位置:Python中文网/ 问答频道 /正文

导入csv 导入操作员

writenames = "col1, Name, col2, col3, col4".split(",")
reader = csv.DictReader(open("Test.csv", "rb"))
writer = csv.DictWriter(open("Test1.csv", "wb"), \
    fieldnames=writenames)
reorderfunct = lambda r: dict([(col, r[col]) for col in writenames])
writer.writeheader()
for row in reader:
    writer.writerow(reorderfunct(row)

输出:

^{pr2}$

我不知道这是什么问题?我知道您必须将字符串转换为字节,但我不确定如何在这个特定的示例中实现这一点。在


Tags: csvnameinforcolopenreadercol2
2条回答

你应该以文本模式而不是二进制模式打开文件。在

reader = csv.DictReader(open("Test.csv", "r"))
writer = csv.DictWriter(open("Test1.csv", "w"), fieldnames=writenames)

DictReader documentation。在

在python3中,csv文件需要以文本模式打开,而不是二进制文件,并且需要用newline=''打开。在

reader = csv.DictReader(open("Test.csv", "r", newline=''))
writer = csv.DictWriter(open("Test1.csv", "w", newline=''), fieldnames=writenames)

这只是在csv.reader and csv.writer docs:中提到的

If csvfile is a file object, it should be opened with newline=''

不过,听写者和听写者也需要它。在

只需要在python2中以二进制模式打开csv文件。在

相关问题 更多 >