Python ValueError:未转换的数据仍保留.000
我是Python的新手,当我的源csv文件更改其格式时,我被抛出了一个循环。日期字段现在有以下内容: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:未转换的数据仍然存
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()