ValueError: Unconverted data remains .000
ValueError: Unconverted data remains .000
我是 Python 的超级新手,当我的 csv 源文件更改其格式时,我陷入了循环。日期字段现在有:2020-07-22T00:00:00.000
而我想要的是:2020-07-22
.
我需要读取源 csv 并将其附加到数据库 table。我查看了其他一些问题并找到了这个示例代码,我认为它可以做我想做的事情(创建一个 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
如有任何建议,我将不胜感激。谢谢
尝试更新行:
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
代表微秒
strptime 函数尝试从字符串中获取日期时间对象,为此它需要一个日期时间字符串并且需要一种与该字符串匹配的格式。例如,假设我有字符串 '25/07/2020 21:13',要提取一个日期,我需要给它格式 '%d/%m/%Y %H:%M',如果我给它格式 '%d/%m/%Y %H:' 它会给出错误 ValueError: unconverted data remains: 13
因为它不知道 13 代表什么(分钟?,秒?,am/pm ?)。要解决此问题,您可以通过打印并修改格式来查看字符串的外观。
使用日期时间格式时一个有用的站点是 https://strftime.org/。
在您的情况下,剩余的 .000 可能表示微秒,因此您需要将其添加到格式中:'%Y-%m-%dT%H:%M:%S.%f'
(%f 代表微秒)
尝试使用 '%Y-%m-%dT%H:%M:%S.%f000'
作为格式化字符串:
正在应用您的代码:
ts = datetime.strptime(row[0], '%Y-%m-%dT%H:%M:%S.%f000').strftime("%Y-%m-%d")
我是 Python 的超级新手,当我的 csv 源文件更改其格式时,我陷入了循环。日期字段现在有:2020-07-22T00:00:00.000
而我想要的是:2020-07-22
.
我需要读取源 csv 并将其附加到数据库 table。我查看了其他一些问题并找到了这个示例代码,我认为它可以做我想做的事情(创建一个 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
如有任何建议,我将不胜感激。谢谢
尝试更新行:
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
代表微秒
strptime 函数尝试从字符串中获取日期时间对象,为此它需要一个日期时间字符串并且需要一种与该字符串匹配的格式。例如,假设我有字符串 '25/07/2020 21:13',要提取一个日期,我需要给它格式 '%d/%m/%Y %H:%M',如果我给它格式 '%d/%m/%Y %H:' 它会给出错误 ValueError: unconverted data remains: 13
因为它不知道 13 代表什么(分钟?,秒?,am/pm ?)。要解决此问题,您可以通过打印并修改格式来查看字符串的外观。
使用日期时间格式时一个有用的站点是 https://strftime.org/。
在您的情况下,剩余的 .000 可能表示微秒,因此您需要将其添加到格式中:'%Y-%m-%dT%H:%M:%S.%f'
(%f 代表微秒)
尝试使用 '%Y-%m-%dT%H:%M:%S.%f000'
作为格式化字符串:
正在应用您的代码:
ts = datetime.strptime(row[0], '%Y-%m-%dT%H:%M:%S.%f000').strftime("%Y-%m-%d")