加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

从python中的xls读取unicode

发布时间:2020-12-20 13:35:16 所属栏目:Python 来源:网络整理
导读:我正在尝试使用 Python读取.xls文件.该文件包含多个非ascii字符(即??ü).我已经尝试过使用openpyxls和xlrd(我对xlrd寄予厚望,因为它无论如何都会读取unicode中的所有内容),但都没有工作. 我在尝试从xls打印信息时发现了多个处理编码/解码的答案,但我似乎无法
我正在尝试使用 Python读取.xls文件.该文件包含多个非ascii字符(即??ü).我已经尝试过使用openpyxls和xlrd(我对xlrd寄予厚望,因为它无论如何都会读取unicode中的所有内容),但都没有工作.

我在尝试从xls打印信息时发现了多个处理编码/解码的答案,但我似乎无法达到那么远.只需尝试读取文件后,此脚本就会出错:

import xlrd
workbook = xlrd.open_workbook('export_data.xls')

导致:

Traceback (most recent call last):
  File "C:UsersAdministratorworkspacetufinderxlstoxmltufinderxlstoxml2.py",line 2,in <module>
    workbook = xlrd.open_workbook('export_data.xls')
  File "C:Python27_32libsite-packagesxlrd__init__.py",line 435,in open_workbook
    ragged_rows=ragged_rows,File "C:Python27_32libsite-packagesxlrdbook.py",line 119,in open_workbook_xls
    bk.get_sheets()
  File "C:Python27_32libsite-packagesxlrdbook.py",line 705,in get_sheets
    self.get_sheet(sheetno)
  File "C:Python27_32libsite-packagesxlrdbook.py",line 696,in get_sheet
    sh.read(self)
  File "C:Python27_32libsite-packagesxlrdsheet.py",line 796,in read
    strg = unpack_string(data,6,bk.encoding or bk.derive_encoding(),lenlen=2)
  File "C:Python27_32libsite-packagesxlrdbiffh.py",line 269,in unpack_string
    return unicode(data[pos:pos+nchars],encoding)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x92 in position 55: ordinal not in range(128)
WARNING *** OLE2 inconsistency: SSCS size is 0 but SSAT size is non-zero
*** No CODEPAGE record,no encoding_override: will use 'ascii'
*** No CODEPAGE record,no encoding_override: will use 'ascii'

我也尝试过:

workbook = xlrd.open_workbook('export_data.xls',encoding_override="utf-8")

导致:

Traceback (most recent call last):
  File "C:UsersAdministratorworkspacetufinderxlstoxmltufinderxlstoxml2.py",in <module>
    workbook = xlrd.open_workbook('export_data.xls',encoding_override="utf-8")
  File "C:Python27_32libsite-packagesxlrd__init__.py",encoding)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 55: invalid start byte
WARNING *** OLE2 inconsistency: SSCS size is 0 but SSAT size is non-zero

并包括顶部各种版本:

# -*- coding: utf-8 -*-

我在Windows Server 2008计算机上的python 2.7上运行它.

解决方法

谢谢大家的反馈!

我最终使用encoding_override函数修复了它.我无法找到cp代码对应德语字符的Microsoft文档,所以我尝试了所有这些.最终我得到了cp1251,它有效!

workbook = xlrd.open_workbook(path,encoding_override="cp1251")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读