Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
只有在某些情况下,Python xlrd在读取日期时无法创建CSV_Python_Excel_Date_Csv - Fatal编程技术网

只有在某些情况下,Python xlrd在读取日期时无法创建CSV

只有在某些情况下,Python xlrd在读取日期时无法创建CSV,python,excel,date,csv,Python,Excel,Date,Csv,我使用xlrd创建了一个XLS2CSV函数,但我不知道.xls输入文件中的日期可以使用哪一列 下面的代码几乎可以正常工作,但在某些情况下(如果使用相同的输入XLS文件多次运行,并不总是相同的行“失败”),例如,不是2015年7月2日,而是将整数保存为47853(我猜excel保存日期的方式是数字) 我感到惊讶的是,几乎在所有情况下,它都可以使用DD/MM/YYYY格式创建带有日期的CSV,但在某些情况下,它们只是作为整数 奇怪的是,有时这条线 印刷品(一) 使用相同的精确值显示同一列的日期,有时

我使用xlrd创建了一个XLS2CSV函数,但我不知道.xls输入文件中的日期可以使用哪一列

下面的代码几乎可以正常工作,但在某些情况下(如果使用相同的输入XLS文件多次运行,并不总是相同的行“失败”),例如,不是2015年7月2日,而是将整数保存为47853(我猜excel保存日期的方式是数字)

我感到惊讶的是,几乎在所有情况下,它都可以使用DD/MM/YYYY格式创建带有日期的CSV,但在某些情况下,它们只是作为整数

奇怪的是,有时这条线 印刷品(一) 使用相同的精确值显示同一列的日期,有时显示数字(至少我在Excel视图中看到了相同的日期)

复制3行的“打印(i)”样本数据

274152097
cuello valeria
274152097@hotmail.com
CUOTAENERO16
SOCIALCARD0116
390.0
CBU
321000115000260990
15/01/2016

273292535
del soto juana
273292535@hotmail.com
CUOTAENERO16
SOCIALCARD0116
350.0
CBU
020092581100001132
06/01/2016

273220457
chavez yudith
273220457@hotmail.com
CUOTAENERO16
SOCIALCARD0116
350.0
CBU
020091351100001132
42384.0

这样一个不规则且不可复制的问题很可能不是由于Python的行为,而是由于xls文件的实际编码,Excel可能会隐藏并隐式地隐藏该文件。一些日期被编码为整数,而其他日期则使用DD/MM/YYYY格式。作为典型的M$应用程序,Excel喜欢获取您的数据,猜测数据的含义,并向您显示这些猜测。有时,它甚至会在保存文件时保存猜测,在您不知情的情况下修改xls。这可以解释你观察到的不规则行为。尝试将xls导出为csv,在基本文本编辑器中打开csv,并对此处打印的记录进行grep。考虑到42384.0等于2016年1月15日,并且您已经显示了2016年1月15日的DMY,那么我认为您在源数据中存在DMY与MDY的问题。顺便说一句,47853是2031年1月5日,而不是2015年7月2日;42187是2015年7月2日。另外,您是否考虑过某些日期可能实际上是日期时间?如果时间是日期的一部分,则
int(i)!=我
@Jeeped我检查了数据和源数据总是采用相同的DMY格式,并且问题出现在
int(i)
之前,就在从
sh.row\u值(r)
读取
i
时,您需要对类型更加严格。调试时,不要只打印
x
,而是打印
repr(x)
和/或
type(x)
。如果我不得不猜测的话,我会说您的Excel文件有时包含字符串,如
'15/01/2016'
,其他时间包含日期,如
42384.0
274152097
cuello valeria
274152097@hotmail.com
CUOTAENERO16
SOCIALCARD0116
390.0
CBU
321000115000260990
15/01/2016

273292535
del soto juana
273292535@hotmail.com
CUOTAENERO16
SOCIALCARD0116
350.0
CBU
020092581100001132
06/01/2016

273220457
chavez yudith
273220457@hotmail.com
CUOTAENERO16
SOCIALCARD0116
350.0
CBU
020091351100001132
42384.0