从列表理解中调用函数给了我一个
ValueError: need more than 1 value to unpack
错误。
我已经定义了这样的函数
def dateTimeStrToTimeStamp(dateTimeStr):
""" Converts a string like '2014-03-07T19:00:00+0000' to
timestamp"""
dateTimeStr, utcStr = dateTimeStr.split('+')
dateTimeObj = datetime.strptime(dateTimeStr, "%Y-%m-%dT%H:%M:%S")
date_in_sec = int(time.mktime(dateTimeObj.timetuple()))
utc_in_sec = int(utcStr[:2]) + int(utcStr[2:])
return date_in_sec + utc_in_sec
我有一个数据,这是一个像这样的对象列表
[{u'id': u'1411421469112603', u'start_time': u'2014-03-09T17:00:00+0000', u'end_time': u'2014-03-09T21:00:00+0000'}, {u'id': u'519204234858802', u'start_time': u'2014-03-08T19:00:00+0000', u'end_time': u'2014-03-08T23:00:00+0000'}, {u'id': u'1393120957624703', u'start_time': u'2014-03-08T19:00:00+0000', u'end_time': u'2014-03-08T23:00:00+0000'}]
当我这样做时
[ dateTimeStrToTimeStamp(event['start_time']) for event in data ]
它给了我ValueError: need more than 1 value to unpack
我正在使用python 2.7.3请帮助我,坚持几个小时
答案 0 :(得分:1)
这一行:
dateTimeStr, utcStr = dateTimeStr.split('+')
dateTimeStr
不包含'+'
时,会出现错误。例如,尝试dateTimeStr, utcStr = 'abc'.split('+')
,您会看到相同的错误。因此,您需要为没有UTC组件的字符串做好准备,可能是将UTC偏移默认为零。您可以通过捕获异常来检测问题:
try:
dateTimeStr, utcStr = dateTimeStr.split('+')
except ValueError:
utcStr = '0'
或者如果没有UTC组件的输入字符串确实是您的函数的错误,您可以提供更有用的错误消息:
try:
dateTimeStr, utcStr = dateTimeStr.split('+')
except ValueError as e:
raise ArgumentError('dateTimeStr {!r} has no UTC component'.format(dateTimeStr)) from e
答案 1 :(得分:0)
此错误是从您的自定义函数引发的,您传入的其中一个字符串没有+
,因此您的split()
方法不返回包含两个项目的列表,当您尝试时要打开它,你得到ValueError: need more than 1 value to unpack
。
以下是您的错误的一个简单示例:
>>> 'ab'.split('-')
['ab']
>>> a,b = 'ab'.split('-')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack