Python 在Excel中保存数据的问题

Python 在Excel中保存数据的问题,python,excel,Python,Excel,我只想在Excel中保存数据,我找到了这段代码,它工作得非常好: import xlsxwriter # Create a workbook and add a worksheet. workbook = xlsxwriter.Workbook('zzzzz.xlsx') worksheet = workbook.add_worksheet() date = "17/08/2015" bill = 001 item = "something" customer = "Luis" price

我只想在Excel中保存数据,我找到了这段代码,它工作得非常好:

import xlsxwriter

# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('zzzzz.xlsx')
worksheet = workbook.add_worksheet()

date = "17/08/2015"
bill = 001
item = "something"
customer = "Luis"
price = 100

# Start from the first cell. Rows and columns are zero indexed.
row = 0
col = 0

# Iterate over the data and write it out row by row.

worksheet.write(row, col, date )
worksheet.write(row, col + 1, bill)
worksheet.write(row, col + 2, item )
worksheet.write(row, col + 3, customer )
worksheet.write(row, col + 4,price)

workbook.close()
我遇到的问题是,当我尝试使用空格保存信息时,如果:

customer = "JOSE LUIS FEBRERO LOPEZ"
错误:

    >>> 

Traceback (most recent call last):
  File "C:\Python27\crearexcel.py", line 28, in <module>
    workbook.close()
  File "C:\Python27\lib\site-packages\xlsxwriter\workbook.py", line 296, in close
    self._store_workbook()
  File "C:\Python27\lib\site-packages\xlsxwriter\workbook.py", line 520, in _store_workbook
    xml_files = packager._create_package()
  File "C:\Python27\lib\site-packages\xlsxwriter\packager.py", line 140, in _create_package
    self._write_shared_strings_file()
  File "C:\Python27\lib\site-packages\xlsxwriter\packager.py", line 280, in _write_shared_strings_file
    sst._assemble_xml_file()
  File "C:\Python27\lib\site-packages\xlsxwriter\sharedstrings.py", line 53, in _assemble_xml_file
    self._write_sst_strings()
  File "C:\Python27\lib\site-packages\xlsxwriter\sharedstrings.py", line 83, in _write_sst_strings
    self._write_si(string)
  File "C:\Python27\lib\site-packages\xlsxwriter\sharedstrings.py", line 110, in _write_si
    self._xml_si_element(string, attributes)
  File "C:\Python27\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:\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 0xa0 in position 11: ordinal not in range(128)
嗨, 我在所有导入之后添加此代码。。。。现在我可以节省不间断的空间

import sys
reload(sys)  
sys.setdefaultencoding('Cp1252')

您可以尝试将脚本的编码设置为utf-8,方法是包括

# coding=utf-8
作为第一行。然后,通过在字符串前面添加一个小写字母u,可以将字符串编码设置为utf-8:

customer = u"JOSE LUIS FEBRERO LOPEZ"
然后,甚至可以在文本中使用非ascii字母,如ñ


或者-如前所述-在文本中使用普通空格而不是非分隔空格(0xa0)。

sys.setdefaultencoding('Cp1252')
-这是一个令人讨厌的修复方法。它掩盖了其他问题,使您的代码脆弱且特定于平台

“JOSE LUIS FEBRERO LOPEZ”
包含一个Windows-1252编码的非中断空格(
0xA0

xlsxwriter要求在使用非ASCII字符时传递Unicode对象。事实上,对所有字符串使用Unicode对象是一种很好的做法

通过在字符串前面添加
u
来创建Unicode对象:

u"JOSE LUIS FEBRERO LOPEZ"
由于Python源代码编码为Windows-1252,因此需要将以下内容添加到源文件的顶部:

# coding=cp1252

这将告诉Python如何将源文件中的字符串解码为Unicode对象。

这是一个不间断的空格,而不是一个常规空格,这是造成问题的原因。这是您的输入手册,或者你是从另一个文件或其他什么地方获取数据的?我将pdf文件转换成文本,并从中提取这些变量。你能分享这些代码吗?这就是你的问题所在。
# coding=cp1252