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

这就是Excel保存的结果:
22/04/1959,Bar,F,01:32.00,01:23.00,00:59.00,00:47.23日期没有特殊的格式设置,时间被格式化为[mm].ss.00。然而,这是in2csv版本的csv:
1959-04-22,Bar,F,0.00106481481481,0.000960648148148,0.00068287037037,0.000546643518519当然一点用也没有。有什么想法吗?似乎没有任何命令行选项对此- no-inference没有帮助。谢谢。
编辑
这两种csvkit和xlrd似乎都考虑了格式化,但它们在这方面并不聪明。在这两种情况下,以文本字符串“21/02/1066”的形式传递日期为21/02/1066,但xlrd将日期“22/04/1959”转换为“21662.0”,csvkit将1959-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电子表格。
发布于 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://stackoverflow.com/questions/30918974
复制相似问题