Python 防止csvkit修改日期/时间?
我只是尝试将Excel转换为csv。但是,它没有考虑日期和时间的格式,也没有从Excel自己的另存为csv生成不同的结果。例如,这是电子表格的一行: 这就是Excel的“另存为”产生的结果:Python 防止csvkit修改日期/时间?,python,excel,csv,export-to-csv,xlrd,Python,Excel,Csv,Export To Csv,Xlrd,我只是尝试将Excel转换为csv。但是,它没有考虑日期和时间的格式,也没有从Excel自己的另存为csv生成不同的结果。例如,这是电子表格的一行: 这就是Excel的“另存为”产生的结果: 22/04/1959,Bar,F,01:32.00,01:23.00,00:59.00,00:47.23 日期没有特殊格式,时间格式为[mm].ss.00。但是,这是csv的版本: 1959-04-22,Bar,F,0.00106481481481,0.000960648148148,0.0006828
22/04/1959,Bar,F,01:32.00,01:23.00,00:59.00,00:47.23
日期没有特殊格式,时间格式为[mm].ss.00
。但是,这是csv的版本:
1959-04-22,Bar,F,0.00106481481481,0.000960648148148,0.00068287037037,0.000546643518519
这当然毫无用处。有什么想法吗?这似乎没有任何命令行选项-无推断
没有帮助。谢谢
编辑
这两个csvkit
ansxlrd
似乎都考虑了格式,但它们并不聪明。在这两种情况下,日期21/02/1066都作为文本字符串“21/02/1066”传递,但日期“22/04/1959”通过xlrd
和1959-04-22
通过csvkit
转换为“21662.0”。它们都只是放弃小的运行时间,通过float表示。如果您知道单元格应该包含经过的时间,这是可以的,因为您只需乘以24*60*60
即可得到正确的答案
我不认为xlrd
在这里会有多大帮助,因为它的日期元组函数只处理秒,而不是厘米
编辑2
发现了一些有趣的东西。我从一个包含时间的基本电子表格开始。其中一个我将时间格式化为[m:]ss.00
,另一个我将时间格式化为[mm:]ss.00
。然后我将它们分别保存为.xls
和.xlsx
,总共给出了4张电子表格。Excel可以将所有4个字符转换为csv,csv中的所有时间文本都显示为最初编写的文本(例如,对于0m 21.0s,即0:21.0
)
in2cv
根本无法处理这两个.xls
版本;此时间显示为00:00:21
。它也无法处理.xlsx
版本的[m:]ss.00
-转换会导致“索引超出范围”错误。CSV中in2csv
可以处理的4个电子表格中只有.xlsx
一个,格式为[mm:]ss.00
。可选的-I
参数应该可以避免这个问题。在测试示例数据时,我得到了Excel的“另存为”生成的数据
命令:
in2csc-sample.csv-I>sample-output-I.csv
输出:
1959年4月22日,巴尔,F,01:32.00,01:23.00,00:59.00,00:47.23
-I,--no推断
在解析CSV输入时禁用类型推断
也在关注同样的问题。根据这一点,现在应该可以修复了,但我仍然无法在通过pip提供的版本中使用--format date参数。我想你可以通过直接从git安装来解决这个问题。有趣的是,我会在接下来的几天里尝试一下。