ValueError:未转换的数据仍为.000

时间:2020-07-22 19:10:31

标签: python csv datetime strptime

我是Python的新手,当我的源csv文件更改其格式时,就被抛出循环。现在,日期字段的内容为:2020-07-22T00:00:00.000,而我想要的是:2020-07-22

我需要阅读源csv并将其附加到数据库表中。我查看了其他一些问题,发现此示例代码可以满足我的要求(创建带有新格式化日期的csv副本,我可以将其与其余代码一起使用)。

import csv
from datetime import datetime

with open(csvCasesVH, 'r') as source:
    with open(csvCasesVH2, 'w') as result:
        writer = csv.writer(result, lineterminator='\n')
        reader = csv.reader(source)
        source.readline()
        for row in reader:
            ts = datetime.strptime(row[0], '%Y-%m-%dT%H:%M:%S').strftime("%Y-%m-%d")
            print(ts)
            row[0]=ts
            if ts != "":
                writer.writerow(row)
source.close()
result.close()

我正试图弄清日期时间格式-快到了,但是现在这个.000挂在那里了,我不知道该怎么做:

ValueError:未转换的数据仍然为.000

我将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:2)

尝试更新该行:

ts = datetime.strptime(row[0], '%Y-%m-%dT%H:%M:%S').strftime("%Y-%m-%d")

收件人:

ts = datetime.strptime(row[0], '%Y-%m-%dT%H:%M:%S.%f').strftime("%Y-%m-%d")

请注意.%f,该时间为微秒

答案 1 :(得分:0)

strptime函数尝试从字符串中获取datetime对象,这样做需要一个datetime字符串,并且需要与该字符串匹配的格式。例如,假设我有字符串“ 25/07/2020 21:13”,要提取日期,我需要给它一个格式为“%d /%m /%Y%H:%M”格式为'%d /%m /%Y%H:',则会产生错误'%Y-%m-%dT%H:%M:%S.%f',因为它不知道13代表什么(分钟?,秒?,上午/下午?)。要解决此问题,您可以通过打印并修改格式来查看字符串的外观。

使用日期时间格式的有用站点是https://strftime.org/

在您的情况下,剩余的.000可能表示微秒,因此您需要将其添加为以下格式:numpy(%f代表微秒)