Python抛出“'utf8'编解码器无法解码位置0中的字节0xd0”错误

时间:2013-10-01 13:44:45

标签: excel python-2.7 text openpyxl

我正在尝试加载当前存在的工作表并导入下面显示的文本文件(逗号分隔值)截图,

Excel表格:

enter image description here

文字档案:

enter image description here

我正在使用下面显示的代码:

# importing necessary modules for performing the required operation
    import glob
    import csv
    from openpyxl import load_workbook
    import xlwt

    #read the text file(s) using the CSV modules and read the dilimiters and quoutechar
    for filename in glob.glob("E:\Scripting_Test\Phase1\*.txt"):
        spamReader = csv.reader((open(filename, 'rb')), delimiter=',')


        #read the excel file and using xlwt modules and set the active sheet
        wb = load_workbook(filename=r"E:\Scripting_Test\SeqTem\Seq0001.xls")
        ws = wb.worksheets(0)


        #write the data that is in text file to excel file
        for rowx, row in enumerate(spamReader):
            for colx, value in enumerate(row):
                ws.write(rowx, colx, value)

        wb.save()

我收到以下错误消息:

  

UnicodeDecodeError:'utf8'编解码器无法解码位置0的字节0xd0:无效的连续字节

还有一个问题:如何告诉python从excel表中的A3列开始导入文本数据?

3 个答案:

答案 0 :(得分:3)

Unicode编码让我感到困惑,但是你不能强迫该值忽略无效字节:

value = unicode(value, errors='ignore')

对于更多有关unicode的阅读,这是一个很好的答案:unicode().decode('utf-8', 'ignore') raising UnicodeEncodeError

答案 1 :(得分:2)

openpyxl仅处理OOXML格式(xlsx / xlsm)。 请尝试使用Excel保存为xlsx文件格式而不是xls。

如果要在代码中将xls文件转换为xlsx。请尝试以下列表中的一个选项:

  1. 在Windows中,您还可以使用excelcnv工具将xls转换为xlxx。
  2. 在Linux中,请检查this article
  3. 或者,您可以在Python中使用xlrd转换为xlsx。请检查this Q&A

答案 2 :(得分:1)

嗨您确定没有具有UTF-8 BOM

的文档

您可以尝试使用UTF-8 BOM codec。一般Windows + UTF + 8可能有点麻烦。虽然它显示的那个字符可能不是BOM。