[英]How to remove strange characters while using regex and xlrd module Python
[英]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.