在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 中将多个 excel '.xlsx' 转换为 '.csv' 文件时,我得到了额外的列?