time.strptime() 和 python-twitter 的错误
我在使用python-twitter这个库来获取推文的日期,然后用time.strptime()
这个函数来解析日期。当我在交互式环境中操作时,一切都正常。但是当我从我的bash命令行运行程序时,就出现了一个ValueError
错误,比如说:
time data u'Wed Aug 12 08:43:35 +0000 2009' does not match
format '%a %b %d %H:%M:%S +0000 %Y'
代码大致是这样的:
api = twitter.Api(username='username', password='pw')
user = api.GetUser(username)
latest = user.GetStatus()
date = latest.GetCreatedAt()
date_struct = time.strptime(date, '%a %b %d %H:%M:%S +0000 %Y')
这段代码就会抛出上面提到的异常。
在交互式环境中是可以正常工作的:
>>> user = api.GetUser('username')
>>> latest = user.GetStatus()
>>> date = latest.GetCreatedAt()
>>> date
u'Wed Aug 12 08:15:10 +0000 2009'
>>>> struct = time.strptime(date, '%a %b %d %H:%M:%S +0000 %Y')
>>>> struct
time.struct_time(tm_year=2009, tm_mon=8, tm_mday=12, tm_hour=8, tm_min=15, tm_sec=10, tm_wday=2, tm_yday=224, tm_isdst=-1)
有人知道为什么会这样吗?
我使用的是Ubuntu 9.04,Python 2.6.2和python-twitter 0.6。所有文件都是unicode格式。
1 个回答
2
可以尝试以下几件事:
(1) 你的交互式会话和“bash”可能在使用不同的语言环境吗?在你的脚本里加上 print time.strftime(some known struct_time)
,看看输出的日期和月份是否用不同的语言显示。
(2) 在你的脚本里加上 print repr(date)
,这样可以清楚地显示你从 latest.GetCreatedAt()
这个调用中得到的内容。