€ 符号 - xlsxwriter 错误

€ sign - xlsxwriter error

我正在尝试从一个网页获取一些数据并将这些数据写入 xlsx 文件。一切似乎都很好,但如果它在关闭文件期间尝试将其写入 xlsx 文件,则可能会出现编码错误。

错误:

Traceback (most recent call last):
  File "C:/Users/Milano/PycharmProjects/distrelec/crawler.py", line 429, in <module>
    temp_file_to_xlsx()
  File "C:/Users/Milano/PycharmProjects/distrelec/crawler.py", line 119, in temp_file_to_xlsx
    wb.close()    
  File "C:\Python27\lib\site-packages\xlsxwriter\workbook.py", line 295, in close
    self._store_workbook()
  File "C:\Python27\lib\site-packages\xlsxwriter\workbook.py", line 518, in _store_workbook
    xml_files = packager._create_package()
  File "C:\Python27\lib\site-packages\xlsxwriter\packager.py", line 134, in _create_package
    self._write_workbook_file()
  File "C:\Python27\lib\site-packages\xlsxwriter\packager.py", line 174, in _write_workbook_file
    workbook._assemble_xml_file()
  File "C:\Python27\lib\site-packages\xlsxwriter\workbook.py", line 464, in _assemble_xml_file
    self._write_sheets()
  File "C:\Python27\lib\site-packages\xlsxwriter\workbook.py", line 1455, in _write_sheets
    self._write_sheet(worksheet.name, id_num, worksheet.hidden)
  File "C:\Python27\lib\site-packages\xlsxwriter\workbook.py", line 1472, in _write_sheet
    self._xml_empty_tag('sheet', attributes)
  File "C:\Python27\lib\site-packages\xlsxwriter\xmlwriter.py", line 80, in _xml_empty_tag
    self.fh.write("<%s/>" % tag)
  File "C:\Python27\lib\codecs.py", line 694, in write
    return self.writer.write(data)
  File "C:\Python27\lib\codecs.py", line 357, in write
    data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 23: ordinal not in range(128)

为了找出问题所在,我编辑了 codecs 模块:

def write(self, object):

        """ Writes the object's contents encoded to self.stream.
        """
        try:
            data, consumed = self.encode(object, self.errors)
            self.stream.write(data)
        except:
            print object
            print repr(object)
            raise Exception

输出为:

<sheet name="Android PC–APC" sheetId="42" r:id="rId42"/>
'<sheet name="Android PC\xe2\x80\x93APC" sheetId="42" r:id="rId42"/>'
    temp_file_to_xlsx()
  File "C:/Users/Milano/PycharmProjects/distrelec/crawler.py", line 119, in temp_file_to_xlsx
    wb.close()    
  File "C:\Python27\lib\site-packages\xlsxwriter\workbook.py", line 295, in close
    self._store_workbook()
  File "C:\Python27\lib\site-packages\xlsxwriter\workbook.py", line 518, in _store_workbook
    xml_files = packager._create_package()
  File "C:\Python27\lib\site-packages\xlsxwriter\packager.py", line 134, in _create_package
    self._write_workbook_file()
  File "C:\Python27\lib\site-packages\xlsxwriter\packager.py", line 174, in _write_workbook_file
    workbook._assemble_xml_file()
  File "C:\Python27\lib\site-packages\xlsxwriter\workbook.py", line 464, in _assemble_xml_file
    self._write_sheets()
  File "C:\Python27\lib\site-packages\xlsxwriter\workbook.py", line 1455, in _write_sheets
    self._write_sheet(worksheet.name, id_num, worksheet.hidden)
  File "C:\Python27\lib\site-packages\xlsxwriter\workbook.py", line 1472, in _write_sheet
    self._xml_empty_tag('sheet', attributes)
  File "C:\Python27\lib\site-packages\xlsxwriter\xmlwriter.py", line 80, in _xml_empty_tag
    self.fh.write("<%s/>" % tag)
  File "C:\Python27\lib\codecs.py", line 699, in write
    return self.writer.write(data)
  File "C:\Python27\lib\codecs.py", line 363, in write
    raise Exception
Exception

请问我该怎么办?

您必须使用正确的编码解码您的输入数据,这似乎是 'utf-8'。

你可能想看看这个:

Example: Simple Unicode with Python 2