Python 无法正确编码
在Python 3.5.1下启动时,以下代码会产生错误: 文件“D:/Python/Kut/exceltocsv.py”,第22行,在表单中 WriteObj.writerow([rowvalues中的条目对应条目]) TypeError:需要类似字节的对象,而不是“str” 谁能帮我修一下吗?(我故意使用openpyxl而不是xlrd。)Python 无法正确编码,python,csv,Python,Csv,在Python 3.5.1下启动时,以下代码会产生错误: 文件“D:/Python/Kut/exceltocsv.py”,第22行,在表单中 WriteObj.writerow([rowvalues中的条目对应条目]) TypeError:需要类似字节的对象,而不是“str” 谁能帮我修一下吗?(我故意使用openpyxl而不是xlrd。) 这方面的文档不足,但Python 3的csv希望您的文件以文本模式打开,而不是以字节模式打开 (另外,在文档中,您应该在打开调用中设置newline=')
这方面的文档不足,但Python 3的
csv
希望您的文件以文本模式打开,而不是以字节模式打开
(另外,在文档中,您应该在打开
调用中设置newline='
)
尝试
open(filename'w',newline='',encoding='utf-8')
删除.encode()可能会起作用。我删除了.encode(),但它仍然不想起作用。我不熟悉csv,所以我不知道。可能需要字节(entry.encode(),“ENCODING”)
import os
import openpyxl
import csv
def sheets_tocsv(file, place):
workbook = openpyxl.load_workbook(file)
sheetnames = workbook.get_sheet_names()
for sheetname in sheetnames:
worksheet = workbook.get_sheet_by_name(sheetname)
csv_file = open(''.join([place, sheetname, '.csv']), 'wb')
writobj = csv.writer(csv_file, quoting=csv.QUOTE_ALL)
for row in range(worksheet.get_highest_row()):
rowvalues = []
for i in worksheet.rows[row]:
rowvalues.append(str(i.value))
writobj.writerow([entry.encode() for entry in rowvalues])
csv_file.close()