无法正确编码

时间:2016-02-21 17:54:58

标签: python csv

在Python 3.5.1下启动时,以下代码会产生错误:

文件" D:/Python/Kut/exceltocsv.py",第22行,在sheets_tocsv中 writobj.writerow([在rowvalues中输入的条目])

TypeError:需要类似字节的对象,而不是' str'

有人可以帮我修理吗? (我故意使用openpyxl而不是xlrd。)

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()

1 个答案:

答案 0 :(得分:0)

这是未记录的,但Python 3的csv期望您的文件以文本而不是字节模式打开。

(另外,从文档中,您应该在newline=''来电中设置open

尝试open(filename, 'w', newline='', encoding='utf-8')