我是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
我将不胜感激。谢谢。
答案 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代表微秒)