Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t在for循环中使用datetime.strtime()_Python_Python 3.x_Datetime - Fatal编程技术网

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