在python中的csv中转换一个假定的excel文件

Posted

技术标签:

【中文标题】在python中的csv中转换一个假定的excel文件【英文标题】:Converting a supposed excel file in csv in python 【发布时间】:2017-01-13 20:25:42 【问题描述】:

我在尝试使用代码将文件转换为 csv 时遇到问题。 我使用下面的代码作为开始

directory = 'C:\OI Data'

filename = 'OpenInterest08-24-16'

data_xls = pd.read_excel(os.path.join(directory,filename), 'Sheet1',    index_col=None)
    data_xls.to_csv(os.path.join(directory,filename +'.csv'), encoding='utf-8')

我收到以下错误:

Traceback(最近一次通话最后一次):

文件“”,第 1 行,在

运行文件中的文件“C:\Anaconda2\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 714 行 execfile(文件名,命名空间)

文件“C:\Anaconda2\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 74 行,在 execfile exec(compile(scripttext, filename, 'exec'), glob, loc)

文件“C:/Users/Public/Documents/Python Scripts/work.py”,第 26 行,在 data_xls = pd.read_excel(os.path.join(directory,filename), 'Sheet1', index_col=None)

文件“C:\Anaconda2\lib\site-packages\pandas\io\excel.py”,第 170 行,在 read_excel 中 io = ExcelFile(io, engine=engine)

init 中的文件“C:\Anaconda2\lib\site-packages\pandas\io\excel.py”,第 227 行 self.book = xlrd.open_workbook(io)

文件“C:\Anaconda2\lib\site-packages\xlrd__init__.py”,第 441 行,在 open_workbook ragged_rows=ragged_rows,

文件“C:\Anaconda2\lib\site-packages\xlrd\book.py”,第 91 行,在 open_workbook_xls biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)

文件“C:\Anaconda2\lib\site-packages\xlrd\book.py”,第 1230 行,在 getbof bof_error('预期的 BOF 记录;找到 %r' % self.mem[savpos:savpos+8])

文件“C:\Anaconda2\lib\site-packages\xlrd\book.py”,第 1224 行,在 bof_error raise XLRDError('不支持的格式,或损坏的文件:' + msg) xlrd.biffh.XLRDError:不支持的格式,或损坏的文件:预期的 BOF 记录;找到'\n\n\n\n\n'

我正在努力找出我正在使用的文件格式 https://www.theice.com/marketdata/reports/icefuturesus/PreliminaryOpenInterest.shtml?futuresExcel=&tradeDate=8%2F24%2F16

自己打开文件我得到以下信息 enter image description here

我仍然是 python 的初学者,非常感谢一些帮助。

谢谢

【问题讨论】:

您的文件是xls 还是xlsx 文件? pandas 会根据扩展名选择合适的解析器,但似乎没有... 这是有问题的:data_xls.to_csv(os.path.join(directory,filename,'.csv'), encoding='utf-8')... 试试:data_xls.to_csv(os.path.join(directory,filename+'.csv'), encoding='utf-8') 【参考方案1】:

您可以从修复这部分开始:

data_xls.to_csv(os.path.join(directory,filename,'.csv'), encoding='utf-8')

当你这样做时会发生什么:

'C:\OI Data\\OpenInterest08-24-16\\.csv'

这不是你想要的。而是这样做:

os.path.join(directory,filename+'.csv')

这会给你:

'C:\OI Data\\OpenInterest08-24-16.csv'

此外,这不是问题,但通常要小心,因为单个反斜杠和字符可以指示转义序列,例如\n 是换行符:

directory = 'C:\OI Data'

而是像这样转义反斜杠:

directory = 'C:\\OI Data'

【讨论】:

以上是关于在python中的csv中转换一个假定的excel文件的主要内容,如果未能解决你的问题,请参考以下文章

Python编程快速上手——Excel到CSV的转换程序案例分析

想用Python对csv表格中的某一列数据进行关键词筛选

在 python 中将多个 excel '.xlsx' 转换为 '.csv' 文件时,我得到了额外的列?

使用 lambda 中的 pandas 从 s3 读取 excel 文件并转换为 csv

csv转换obj

如何将单个工作表中的多行(在 excel 中)转换为多个 CSV 文件