Python Can';t在for循环中使用datetime.strtime()
我有一个列表,其中每个元素本身就是一个包含一些日期的两元素列表:Python Can';t在for循环中使用datetime.strtime(),python,python-3.x,datetime,Python,Python 3.x,Datetime,我有一个列表,其中每个元素本身就是一个包含一些日期的两元素列表: d = [['2004:08:16:09:54:58', 'peach'], ['2013:05:10:19:57:50', 'eggplant'], ['2007:05:24:07:37:51', 'zucchini,']] 对于嵌套在列表“d”中的每个列表,我希望使用datetime.strTime()将每个“字符串”日期转换为datetime类型,同时保持第二个元素不变,即:[“2004:08:16:09:54:58”,“
d = [['2004:08:16:09:54:58', 'peach'],
['2013:05:10:19:57:50', 'eggplant'],
['2007:05:24:07:37:51', 'zucchini,']]
对于嵌套在列表“d”中的每个列表,我希望使用datetime.strTime()将每个“字符串”日期转换为datetime类型,同时保持第二个元素不变,即:[“2004:08:16:09:54:58”,“peach”]-->[2004-08-16 09:54:58,“peach”]
进行以下工作:
print(datetime.strptime('2004:08:16:09:54:58', '%Y:%m:%d:%H:%M:%S'))
>>2004-08-16 09:54:58
但这似乎不是一个循环:
for i in d:
datetime.strptime(i[0], '%Y:%m:%d:%H:%M:%S')
print d[0]:
>>['2004:08:16:09:54:58', 'peach']
如果我尝试使用转换后的字符串创建新列表,而不是更改原始列表,则会遇到不同的问题:
new_list = []
for i in d:
new_list.append(datetime.strptime(i[0],'%Y:%m:%d:%H:%M:%S'))
new_list.append(i[1])
print(new_list[0])
>> 2004-08-16 09:54:58
在这里,表突然只有正确转换的datetime对象,而没有水果/蔬菜对象
有人能提供这两种情况的见解吗?感谢快速简便的修复,您忘记覆盖以前的值。这是你应该怎么做的
for i in d:
i[0] = datetime.strptime(i[0], '%Y:%m:%d:%H:%M:%S')
print d[0]
当您第一次添加水果名时,水果名本身将出现在
新列表[1]
中
如果希望新列表是列表列表列表(即-与旧列表完全相同),则应使用:
for i in d:
new_list.append([datetime.strptime(i[0],'%Y:%m:%d:%H:%M:%S'), i[1]])
因此,将这两个值作为列表附加到您的新列表中
如果您希望使用格式(即-2004-08-16 09:54:58)保存日期时间,您可以在保存为字符串的同时使用.isoformat()
:
此处的文档:
或使用字符串格式:
'{:%Y-%m-%d %H:%M:%S}'.format(datetime.strptime(i[0],'%Y:%m:%d:%H:%M:%S'))
如果您想了解有关格式的更多信息,可以查看:
在Python3中,这会导致以下结果:[datetime.datetime(2004,8,16,9,54,58),“peach”],而不是(2004-08-16 09:54:58),有人知道Python3的快速修复方法吗?感谢您的输入,您只需在以下示例之后重新格式化它:
d=list(map(lambda x:%datetime.datetime.strtime(x[0],%Y:%m:%d:%H:%m:%S')。strftime(%Y-%m-%d%H:%m:%S'),x[1]),d))
在python 3中,这会导致以下结果:[datetime.datetime(2004,8,16,9,54,58),'peach',,而不是(2004-08-16:54:58)有人知道Python3的快速修复方法吗?谢谢你的帮助input@AFKRD您可以使用isoformat()
-datetime.strtime(i[0],“%Y:%m:%d:%H:%m:%S”)。isoformat()
。但它会将其保存为字符串。您还可以使用字符串格式-“{:%Y-%m-%d%H:%m:%S}”。格式(datetime.strtime(i[0],“%Y:%m:%d:%H:%m:%S”)
'{:%Y-%m-%d %H:%M:%S}'.format(datetime.strptime(i[0],'%Y:%m:%d:%H:%M:%S'))