首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止csvkit修改日期/时间?

防止csvkit修改日期/时间?
EN

Stack Overflow用户
提问于 2015-06-18 15:00:29
回答 1查看 809关注 0票数 3

我只是尝试将csvkit转换成csv。然而,它并没有考虑日期和时间的格式设置,并且产生与Excel自己的保存为csv的不同结果。例如,这是电子表格的一行:

这就是Excel保存的结果:

代码语言:javascript
复制
22/04/1959,Bar,F,01:32.00,01:23.00,00:59.00,00:47.23

日期没有特殊的格式设置,时间被格式化为[mm].ss.00。然而,这是in2csv版本的csv:

代码语言:javascript
复制
1959-04-22,Bar,F,0.00106481481481,0.000960648148148,0.00068287037037,0.000546643518519

当然一点用也没有。有什么想法吗?似乎没有任何命令行选项对此- no-inference没有帮助。谢谢。

编辑

这两种csvkitxlrd似乎都考虑了格式化,但它们在这方面并不聪明。在这两种情况下,以文本字符串“21/02/1066”的形式传递日期为21/02/1066,但xlrd将日期“22/04/1959”转换为“21662.0”,csvkit1959-04-22转换为“21662.0”。它们都放弃了较小的运行时间,并通过浮点表示形式。如果您知道单元格应该包含经过的时间,这是可以的,因为您只需乘以24*60*60就可以得到正确的答案。

我认为xlrd在这里没有多大帮助,因为它的日期元组函数只处理秒,而不是厘米秒。

编辑2

发现了一些有趣的东西。我从一个包含时间的基本电子表格开始。在其中一个文件中,我将“时代”格式化为[m:]ss.00,而在另一个文件中,我将它们格式化为“[mm:]ss.00”。然后,我将每个电子表格保存为一个.xls和一个.xlsx,总共给出了4个电子表格。Excel可以将所有的4转换为csv,而csv中的所有文本都以原来的形式出现(即。以0:21.0为例,为0m ~21.0)。

in2csv根本无法处理这两个.xls版本;这一次显示为00:00:21。它也不能处理[m:]ss.00版本的.xlsx -转换会给出“超出范围的索引”错误。在in2csv可以处理的4个电子表格中,只有一个是带有[mm:]ss.00格式的.xlsx电子表格。

EN

回答 1

Stack Overflow用户

发布于 2017-08-07 16:52:19

可选的-I参数应该可以避免这个问题。在测试您的示例数据时,我将得到Excel的保存结果。

命令:in2csv sample.csv -I > sample-output-i.csv

输出:22/04/1959,Bar,F,01:32.00,01:23.00,00:59.00,00:47.23

-I, --no-inference在解析CSV输入时禁用类型推断。

https://csvkit.readthedocs.io/en/latest/scripts/in2csv.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30918974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档