2014-10-11 58 views
0

我有一个包含以下内容的json文件,我想将其字符串值转换为日期时间对象:如何通过json字符串循环并将它们转换为datetime对象?

[“2014-01-20 00:01:31”,“2014-01-20 00 :01:51“,”2014-01-20 00:02:12“]

我想我需要创建一个for循环并遍历字符串值并使用strptime方法转换它们。我不确定如何创建for循环,以便正确地遍历字符串值。

我认为它应该如下所示:

for items in data: 
    dateTime = datetime.strptime(items, '%Y-%m-%d %H:%M:%S') 
print dateTime 

任何帮助,将不胜感激。

+0

当您尝试时发生了什么? – wwii 2014-10-11 19:49:03

+0

答案取决于您在转换数据后对数据执行的操作。你想替换旧的列表吗?你想创建一个新的列表吗?或者你想在没有存储新值的情况下(在循环中)处理数据? – netcoder 2014-10-11 19:53:05

+0

我想将它们附加到列表中。 – 2014-10-11 20:12:01

回答

0

在Python for循环中可以迭代任何类型的元素(并且大多数容器,特别是list,可以包含不同类型的元素)。它只是需要元素元素之后,并将其绑定到for语句中使用的名称:

dates = ["2014-01-20 00:01:31", "2014-01-20 00:01:51", "2014-01-20 00:02:12"] 
for dt in dates: 
    dateTime = datetime.strptime(dt, '%Y-%m-%d %H:%M:%S') 
    print dateTime 
+0

很好,但也许用https://docs.python.org/3/library/email.util.html#email.utils.parsedate而不是strptime更好。 – user1277476 2014-10-11 19:52:18

+0

这是有道理的。 – 2014-10-11 20:08:02

+0

我的json在其中有断线。 dateTime方法失败,因为它不能解释'\ n'。我怎样才能摆脱断线? – 2014-10-11 20:10:05

1

你的循环是好的,但如果你想datetime对象的列表使用list comp

from datetime import datetime 

data = ["2014-01-20 00:01:31", "2014-01-20 00:01:51", "2014-01-20 00:02:12"] 
print [datetime.strptime(x.rstrip(),'%Y-%m-%d %H:%M:%S') for x in data] 

[datetime.datetime(2014, 1, 20, 0, 1, 31), datetime.datetime(2014, 1, 20, 0, 1, 51), datetime.datetime(2014, 1, 20, 0, 2, 12)] 

x.rstrip()将删除换行字符

相关问题