【问题标题】:Python pandas to excel UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 11Python pandas to excel UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 11
【发布时间】:2017-12-07 15:46:06
【问题描述】:

在对电子商务网站进行网页抓取后,我已将所有数据保存到 pandas 数据框中。好吧,当我尝试将我的 pandas 数据框保存到一个 excel 文件时,我收到以下错误:

Traceback (most recent call last):

File "<ipython-input-7-3dafdf6b87bd>", line 2, in <module>
  sheet_name='Dolci', encoding='iso-8859-1')

File "C:\ProgramData\Anaconda2\lib\site-packages\pandas\core\frame.py", line 
  1466, in to_excel
     excel_writer.save()

File "C:\ProgramData\Anaconda2\lib\site-packages\pandas\io\excel.py", line 
  1502, in save
     return self.book.close()

File "C:\ProgramData\Anaconda2\lib\site-packages\xlsxwriter\workbook.py", 
  line 299, in close
     self._store_workbook()

File "C:\ProgramData\Anaconda2\lib\site-packages\xlsxwriter\workbook.py", 
  line 607, in _store_workbook
     xml_files = packager._create_package()

File "C:\ProgramData\Anaconda2\lib\site-packages\xlsxwriter\packager.py", 
  line 139, in _create_package
     self._write_shared_strings_file()

File "C:\ProgramData\Anaconda2\lib\site-packages\xlsxwriter\packager.py", 
  line 286, in _write_shared_strings_file
     sst._assemble_xml_file()

File "C:\ProgramData\Anaconda2\lib\site-
  packages\xlsxwriter\sharedstrings.py", line 53, in _assemble_xml_file
     self._write_sst_strings()

File "C:\ProgramData\Anaconda2\lib\site-
  packages\xlsxwriter\sharedstrings.py", line 83, in _write_sst_strings
     self._write_si(string)

File "C:\ProgramData\Anaconda2\lib\site-
  packages\xlsxwriter\sharedstrings.py", line 110, in _write_si
     self._xml_si_element(string, attributes)

File "C:\ProgramData\Anaconda2\lib\site-packages\xlsxwriter\xmlwriter.py", 
  line 122, in _xml_si_element
     self.fh.write("""<si><t%s>%s</t></si>""" % (attr, string))

File "C:\ProgramData\Anaconda2\lib\codecs.py", line 706, in write
     return self.writer.write(data)

File "C:\ProgramData\Anaconda2\lib\codecs.py", line 369, in write
     data, consumed = self.encode(object, self.errors)


UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 11: 
ordinal not in range(128)

我使用的代码是这样的:

df.to_excel('my_file.xlsx',sheet_name='Dolci', encoding='iso-8859-1')

但它不起作用,我什至尝试过:

df.to_excel('my_file.xlsx',sheet_name='Dolci', encoding='utf-8')

但它仍然给我错误。 有人可以帮我解决这个问题吗?

【问题讨论】:

  • 你能给我们一个MCVE吗?
  • 显示错误的完整跟踪,我们需要查看它起源于哪一行以及调用它的所有内容。
  • 很抱歉我在完整跟踪错误之前添加了。
  • 大家好!有没有人可以帮助我?

标签: python dataframe encoding utf-8


【解决方案1】:

您似乎在 ExcelWriter 中使用 xlsxwriter 引擎。 尝试改用 openpyxl。

writer = pd.ExcelWriter('file_name.xlsx', engine='openpyxl')
df.to_excel(writer)
writer.save()

【讨论】:

    【解决方案2】:

    添加到@Vadym 的响应中,您可能必须关闭您的编写器才能创建文件。

        writer = pd.ExcelWriter(xlPath, engine='openpyxl')
        df.to_excel(writer)
        writer.close()
    

    “取决于所用引擎的行为”

    见: https://github.com/pandas-dev/pandas/issues/9145 这应该是评论,但我没有代表...

    【讨论】:

      【解决方案3】:

      to_excel 方法有个必不可少的参数,试试

      df.to_excel('filename.xlsx', engine='openpyxl')
      

      它对我有用。

      【讨论】:

        猜你喜欢
        • 2013-12-31
        • 1970-01-01
        • 2018-11-02
        • 1970-01-01
        • 1970-01-01
        • 2013-03-16
        • 1970-01-01
        • 2022-01-13
        • 1970-01-01
        相关资源
        最近更新 更多