我有这个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()
我该如何解决这个问题?
答案 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]