繁体   English   中英

Python XLRD模块为某些ASCII字符提供ValueError

[英]Python XLRD module gives ValueError for some ASCII characters

我正在尝试使用python中的xlrd从excel文件中读取一些数据。 有些单元格包含特殊字符,例如sigma,Pi等。 但是xlrd给我UnicodeEncodeError

这是我的excel文件:

在此处输入图片说明

这是我使用的代码:

import xlrd
if __name__ == '__main__':
    wb = xlrd.open_workbook('test.xlsx')
    s = wb.sheet_by_name('test')
    for row in range(1, s.nrows):
        values = {}
        for column in range(s.ncols):
            values.update({s.cell(0, column).value: str(s.cell(row, column).value)})    
            print values

这是输出:

{u'formula': 'a + b * 15', u'name': 'test1'}
Traceback (most recent call last):
  File ".\testXLRD.py", line 21, in <module>
    values.update({s.cell(0, column).value: str(s.cell(row, column).value)})
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2211' in position 0: ordinal not in range(128)

我该怎么办??

正如Mathias所说, str() u'\∑'失败,因为它试图以ascii格式解码unicode字符串u'\∑'而应使用实例'utf-8'。

由于s.cell(row, column)返回一个浮点数,一个int或某个unicode字符串 ,因此您最好不要更改格式或在处理时以unicode转换所有内容:

values.update({s.cell(0, column).value: unicode(s.cell(row, column).value)})

如果您确实想要一个字符串,而不是unicode,这应该可以工作:

values.update({s.cell(0, column).value: unicode(s.cell(row, column).value).encode('utf-8')})   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM