ValueError:解压缩python错误的值太多了

时间:2017-06-27 16:49:20

标签: python list

我有这个python列表lst4当使用logger.debug打印到记录器时看起来像这样 -

["('08AM', '02-19')", "('14PM', '2204')", "('14PM', '3201')"]

现在我做的时候

innr_lst = ["{Start Time: %s, Room Number: %s}" % (starttime, room_number)
            for starttime, room_number in lst4]

我收到此错误:

  

ValueError:要解压缩的值太多

lst4(上面列表推导的结尾)来自数据库select

def ret():
    SELECT Start_Time,Room_Number...

    for i in resultSet1:
        time = i[0]
        rec = ((time).strftime('%H%p'), i[1])
        lst4.append(str(rec))

    return lst4

def main_func():

    lst4 = ret()

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

lst4的每个元素都是单个值:一个字符串,例如

"('08AM', '02-19')"

这个类似于一个字符串元组,但它不是:它是一个恰好包含括号和单引号字符的单个字符串。因此,您没有使用starttime, roomnumber提取两个值。

要解决此问题,请从值中删除双引号。这将为您提供一个元组列表。如果你没有那个级别的控制,那么你必须将每个字符串解析为它的组件值:尝试使用正则表达式,或者简单地将字符串拆分为逗号并从两个部分重新组成元组。 / p>

答案 1 :(得分:0)

正如修剪所说,lst4应该包含字符串元组,而不是看起来像字符串元组的字符串。例如,

[("08AM", "02-19"), ("14PM", "2204")]

话虽如此,inner_lst也可能是一个字符串元组列表。这意味着元组中两个字符串的字符串格式需要单独完成。

innr_lst = [("Start Time: %s" % starttime, "Room Number: %s" % room_number)
        for starttime, room_number in lst4]