gpt4 book ai didi

python - 为什么 csvkit in2csv 将日期转换为整数?

转载 作者:行者123 更新时间:2023-12-01 04:32:27 31 4
gpt4 key购买 nike

我从 this URL 下载了一个 .xlsx 文件,其中包含如下所示的行: sample rows

但是当我尝试使用 csvkit 版本 0.9.1 中的 in2csv 转换此文件时,我得到如下输出行:

3,,0.625,42185,42916,912828XJ4,1900-01-26,0.9119,-----,...
4,,0.875,41835,42931,912828WT3,1900-01-27,0.9122,-----,...

我们得到的是整数,而不是可识别为日期的条目。这些整数似乎是 1900-01-01 和 xlsx 中相应日期之间的天数。此外,应该是整数的值($26 和 $27)以日期格式显示!有没有一种简单的方法可以让 in2csv 以可识别的格式输出这些日期?

最佳答案

简而言之

只需升级openpyxl包。这是它的一个已知错误并已修复。

pip install --upgrade openpyxl

升级后:

3,,0.625,2015-06-30,2017-06-30,912828XJ4,26,0.9119,-----,...
4,,0.875,2014-07-15,2017-07-15,912828WT3,27,0.9122,-----,...

我将表的典型行复制到新创建的 .xlsx 文件中,但在转换时出现以下错误:

list index out of range

跟踪异常:

>>> from csvkit import convert
>>> convert.convert(open('test.xlsx', 'rb'), 'xlsx')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.4/site-packages/csvkit/convert/__init__.py", line 39, in convert
return xlsx2csv(f, **kwargs)
File "/usr/local/lib/python3.4/site-packages/csvkit/convert/xlsx.py", line 51, in xlsx2csv
book = load_workbook(f, use_iterators=True, data_only=True)
File "/usr/local/lib/python3.4/site-packages/openpyxl/reader/excel.py", line 154, in load_workbook
_load_workbook(wb, archive, filename, read_only, keep_vba)
File "/usr/local/lib/python3.4/site-packages/openpyxl/reader/excel.py", line 209, in _load_workbook
parsed_styles = read_style_table(archive)
File "/usr/local/lib/python3.4/site-packages/openpyxl/reader/style.py", line 200, in read_style_table
p.parse()
File "/usr/local/lib/python3.4/site-packages/openpyxl/reader/style.py", line 56, in parse
self.parse_cell_styles()
File "/usr/local/lib/python3.4/site-packages/openpyxl/reader/style.py", line 138, in parse_cell_styles
self._parse_xfs(node)
File "/usr/local/lib/python3.4/site-packages/openpyxl/reader/style.py", line 160, in _parse_xfs
format_code = self.number_formats[numFmtId-165]
IndexError: list index out of range
list index out of range

事情发生在 openpyxl 包中,该包用于读取/写入 Excel 2010 xlsx/xlsm 文件。

问题已 reportedfixed在最新版本的 openyxl 中。但是在 csvkitrequirements.txt 中:

openpyxl==2.2.0-b1

根据this issue ,这只是当时的一种解决方法,所以我认为只需升级 openpyxl (当前为 2.2.5)就可以了。

关于python - 为什么 csvkit in2csv 将日期转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32189586/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com