Python ValueError:未转换的数据仍保留.000

Python ValueError:未转换的数据仍保留.000,python,csv,datetime,strptime,Python,Csv,Datetime,Strptime,我是Python的新手,当我的源csv文件更改其格式时,我被抛出了一个循环。日期字段现在有以下内容:2020-07-22T00:00:00.000当我想要的是:2020-07-22 我需要读取源csv并将其附加到数据库表中。我查看了一些其他问题,发现了这个示例代码,我认为它可以满足我的要求(创建一个带有新格式日期的csv副本,我可以将其与我的其余代码一起使用) 我正试图找出datetime格式-几乎就要到了,但现在这个.000挂在那里,我不知道该怎么办: ValueError:未转换的数据仍然存

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

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

我正试图找出datetime格式-几乎就要到了,但现在这个.000挂在那里,我不知道该怎么办:

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

如果您有任何建议,我将不胜感激。谢谢。

尝试更新行:

ts=datetime.strtime(第[0]行,“%Y-%m-%dT%H:%m:%S”).strftime(“%Y-%m-%d”)

致:

ts=datetime.strtime(第[0]行,“%Y-%m-%dT%H:%m:%S.%f”).strftime(“%Y-%m-%d”)

请注意
%f
,该值为微秒

请尝试更新该行:

ts=datetime.strtime(第[0]行,“%Y-%m-%dT%H:%m:%S”).strftime(“%Y-%m-%d”)

致:

ts=datetime.strtime(第[0]行,“%Y-%m-%dT%H:%m:%S.%f”).strftime(“%Y-%m-%d”)


请注意,
%f
用于微秒

strtime函数试图从字符串中获取datetime对象,为此,它需要datetime字符串,并且需要与字符串匹配的格式。例如,假设我有一个字符串“25/07/2020 21:13”,要提取一个日期,我需要给它一个格式“%d/%m/%Y%H:%m”,如果我给它一个格式“%d/%m/%Y%H:”它会给出一个错误
ValueError:未转换的数据仍然是:13
,因为它不知道13代表什么(分?、秒?、am/pm?)。要解决此问题,可以通过打印字符串并修改格式来查看字符串的外观

使用datetime格式时使用的一个有用的站点是


在您的例子中,剩余的.000可能意味着微秒,因此您需要将其添加到以下格式:
'%Y-%m-%dT%H:%m:%S.%f'
(%f代表微秒数)

strptime函数尝试从字符串中获取datetime对象,这样做需要datetime字符串,并且需要与字符串匹配的格式。例如,假设我有一个字符串“25/07/2020 21:13”,要提取一个日期,我需要给它一个格式“%d/%m/%Y%H:%m”,如果我给它一个格式“%d/%m/%Y%H:”它会给出一个错误
ValueError:未转换的数据仍然是:13
,因为它不知道13代表什么(分?、秒?、am/pm?)。要解决此问题,可以通过打印字符串并修改格式来查看字符串的外观

使用datetime格式时使用的一个有用的站点是

在您的例子中,剩余的.000可能意味着微秒,因此您需要将其添加到以下格式:
'%Y-%m-%dT%H:%m:%S.%f'
(%f代表微秒)

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()