首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python .split IndexError

Python .split IndexError
EN

Stack Overflow用户
提问于 2016-02-04 20:14:54
回答 3查看 140关注 0票数 1

新来的Python。尝试调用.split来分隔时间值,以便计算四月的所有登录日期:如果我调用响应‘数据,数据如下所示

代码语言:javascript
复制
[{u'email': u'wilderman.nyree@heidenreich.com'}, {u'login_date': u'2014-05-04T04:09:29-07:00', u'email': u'vrippin@gmail.com'}, {u'login_date': u'2014-04-13T20:37:31-04:00', u'email': u'eileen.gusikowski@oreilly.info'}, {u'login_date': u'2014-05-11T15:34:17-04:00', u'email': u'cstehr@keebler.com'}, {u'login_date': u'2014-04-13T17:12:20-04:00', u'email': u'onolan@gmail.com'}, {u'login_date': u'2014-04-01T02:22:55+05:00', u'email': u'ygoyette@yahoo.com'}, {u'login_date': u'2014-04-22T21:04:03+04:00', u'email': u'vblanda@gmail.com'}, {u'login_date': u'2014-05-08T22:30:57-04:00', u'email': u' ybartoletti@littel.biz'}, {u'login_date': u'2014-04-25T13:27:48-08:00', u'email': u'woodie.crooks@kozey.com'}, {u'login_date': u'2014-04-14T02:18:48-07:00', u'email': u'emilia16@block.com'}, {u'login_date': u'2014-04-20T11:02:21-10:00', u'email': u'bahringer.karl@yahoo.com'}, {u'login_date': u'2014-04-27T11:08:50+10:00', u'email': u'morissette.lalla@kuhicmuller.com'}]

依此类推,所以forth...when运行这段代码:

代码语言:javascript
复制
 loggedList = [user['login_date'] for user in response['data']]
 for login in loggedList:
    if login is not None:
     aprilList.append('-' + login.split('-')[0])


 # print aprilList
 print response['data']

我在控制台里得到了打印出来:

代码语言:javascript
复制
u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014', u'-2014']

但是,当我试图通过将.split列表的第二部分更改为login.split('-')[1])来访问第二部分时,得到的IndexError列表超出了范围。

如何访问登录日期的月份部分?我想我已经接近了,而且它正用.split方法隐藏在某个地方。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-04 20:22:38

如果您查看login.split('-')[0])的输出,您会注意到其中一个是u'-',

这可能意味着您的一个数据条目有一个空的登录日期,因此login.split给出了一个数组,其中只有空字符串。它有一个元素,因此第二个索引超出了范围。

要么确保您的所有数据格式正确并完整,要么只在login.split的结果足够长的情况下尝试打印这个月。

票数 4
EN

Stack Overflow用户

发布于 2016-02-04 20:25:22

使用dateutil模块执行此操作。

代码语言:javascript
复制
from dateutil import parser
d = parser.parse("2014-04-13T20:37:31-04:00")
print d.month
票数 2
EN

Stack Overflow用户

发布于 2016-02-04 20:35:37

如果响应中的每个元素都有login_date,则添加验证,我还建议将date解析为datetime.datetime格式,这样就可以访问所有时间参数:

代码语言:javascript
复制
import dateutil.parser as dp

for user in response['data']:
    if user['login_date']:
        print dp.parse((user['login_date'])).month
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35210743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档