Python 读取excel时,断言错误与熊猫

Python 读取excel时,断言错误与熊猫,python,excel,pandas,xlsx,xlrd,Python,Excel,Pandas,Xlsx,Xlrd,我正在尝试使用pandas将xlsx文件读入python。 我以前做过数千次,但由于某种原因,它不能处理特定的文件 该文件是从另一个源下载的,当使用pandas读取时,我会得到一个断言错误(见结尾): df = pandas.read_excel(pathtomyfile, sheetname = "Sheet1") 该变量是为路径定义的。路径存在(os.path.exists(path)返回True) 当我复制文件内容并将值粘贴到新的excel文档中时,这个新文档将使用read_excel(

我正在尝试使用pandas将xlsx文件读入python。
我以前做过数千次,但由于某种原因,它不能处理特定的文件

该文件是从另一个源下载的,当使用pandas读取时,我会得到一个断言错误(见结尾):

df = pandas.read_excel(pathtomyfile, sheetname = "Sheet1")
该变量是为路径定义的。路径存在(os.path.exists(path)返回True)

当我复制文件内容并将值粘贴到新的excel文档中时,这个新文档将使用read_excel()方法打开

复制文件内容并将格式粘贴到新excel中时, 这个新的将使用read_excel()方法打开

它似乎不是值或格式

我猜这可能是编码问题?
谢谢你的帮助

    df1 = pandas.read_excel(snap1)
File "C:\Python\python-3.4.4.amd64\lib\site-packages\pandas\io\excel.py", line 163, in read_excel
    io = ExcelFile(io, engine=engine)
File "C:\Python\python-3.4.4.amd64\lib\site-packages\pandas\io\excel.py", line 206, in __init__
    self.book = xlrd.open_workbook(io)
File "C:\Python\python-3.4.4.amd64\lib\site-packages\xlrd\__init__.py", line 422, in open_workbook
    ragged_rows=ragged_rows,
File "C:\Python\python-3.4.4.amd64\lib\site-packages\xlrd\xlsx.py", line 794, in open_workbook_2007_xml
    x12sheet.process_stream(zflo, heading)
File "C:\Python\python-3.4.4.amd64\lib\site-packages\xlrd\xlsx.py", line 531, in own_process_stream
    self_do_row(elem)
File "C:\Python\python-3.4.4.amd64\lib\site-packages\xlrd\xlsx.py", line 597, in do_row
    assert 0 <= self.rowx < X12_MAX_ROWS
AssertionError
df1=pandas.read\u excel(snap1)
文件“C:\Python\Python-3.4.4.amd64\lib\site packages\pandas\io\excel.py”,第163行,以read\u excel格式
io=ExcelFile(io,engine=engine)
文件“C:\Python\Python-3.4.4.amd64\lib\site packages\pandas\io\excel.py”,第206行,在\uuu init中__
self.book=xlrd.open_工作簿(io)
文件“C:\Python\Python-3.4.4.amd64\lib\site packages\xlrd\\uuuuu init\uuuu.py”,第422行,在OpenU工作簿中
参差不齐的行=参差不齐的行,
文件“C:\Python\Python-3.4.4.amd64\lib\site packages\xlrd\xlsx.py”,第794行,在open\u工作簿\u 2007\u xml中
X12表.工艺流程(zflo,标题)
文件“C:\Python\Python-3.4.4.amd64\lib\site packages\xlrd\xlsx.py”,第531行,在own_进程_流中
自行(elem)
文件“C:\Python\Python-3.4.4.amd64\lib\site packages\xlrd\xlsx.py”,第597行,在do_行

assert 0为了完整起见,我遇到了一个类似的问题,第一行的行号不正确,我通过使用改编自

def repair\u breaked\u excelfile(zipfname,*filename,new\u name=None):
# https://stackoverflow.com/a/4653863/1562285
导入临时文件
进口拉链
进口舒蒂尔
导入操作系统
tempdir=tempfile.mkdtemp()
尝试:
tempname=os.path.join(tempdir,'new.zip')
zipfile.zipfile(zipfname,'r')作为zipread:
zipfile.zipfile(tempname,'w')作为zipwrite:
对于zipread.infolist()中的项:
打印('fn:'+item.filename)
如果item.filename不在文件名中:
data=zipread.read(item.filename)
zipwrite.WriteST(项目、数据)
其他:
data=zipread.read(item.filename)
数据=数据。替换(b'',b'')
zipwrite.WriteST(项目、数据)
通过
如果不是新名称:
新名称=zipfname
shutil.move(临时名称、新名称)
最后:
shutil.rmtree(tempdir)

显然,xlrd中有一个补丁,在我的例子中,我使用xlrd包读取excel,我得到了相同的断言错误。 从站点包和打开的sheet.py()打开xlrd包

在sheet.py中找到此代码

    if self.biff_version >= 80:
        self.utter_max_rows = 65536
    else:
        self.utter_max_rows = 16384
把上面的转换成

 #if self.biff_version >= 80:
 self.utter_max_rows = 65536
 #else:
 #      self.utter_max_rows = 16384
现在试着运行你的程序。。。
问题将得到解决:)

遇到同样的问题,我将文件保存为xml格式:“另存为类型:xml电子表格2003”在窗口中。然后打开文件并另存为xlsx格式。新文件不再显示错误消息。

文件文本中包含韩文字符。这些需要替代编码。 在read_excel()方法中使用“encoding”参数解决了这个问题


df=pandas.read_excel(pathtomyfile,sheetname=“Sheet1”,encoding=“utf-16”)

有时,只需删除excel表格下方的(空白)行即可解决此问题。

查看系统中的xlsx.py文件

在您的计算机中,它显然位于C:\Python\Python-3.4.4.amd64\lib\site packages\xlrd\xlsx.py

搜索行:

X12_MAX_ROWS = 2 ** 20
把它改成

X12_MAX_ROWS = 2 ** 22

这将把行数的限制从100万行提高到400万行。

基于断言检查
0,不仅82行长,三列。文件中是否可能存在超出边界的杂散值?如果备份内容,选择“全部”并删除,然后粘贴回内容中会怎么样?我在复制到另一个excel文件时选择了“全部”……当我尝试read_table方法时,它显示了有关找到0x89的信息?这可能是错误源吗?错误如下:UnicodeDecodeError:“utf-8”编解码器无法解码位置0中的字节0x89:无效的起始字节t无法了解此处发生的情况/原因?
X12_MAX_ROWS = 2 ** 22