提问人:Inby 提问时间:1/18/2023 更新时间:1/19/2023 访问量:318
ValueError:字典中没有足够的值来解压缩(预期为 2,得到 1)
ValueError: not enough values to unpack (expected 2, got 1) in dictionary
问:
我试图做我所知道的一切,但我无法解决这个问题
import re
Alice = {}
nombre = input("Cuál es tu nombre: ")
while True:
mensaje = input(nombre+": ").lower()
new_string = re.sub(r"[^a-zA-Z0-9áéíóú ]","",mensaje)
if new_string in Alice:
print("Alice:",Alice[new_string])
else:
print("Alice: No se que decir a esto, ¡dime que debería decir sobre esto!")
archivo = open("Alice.txt","a")
new_answer = input(nombre+": ")
archivo.write(new_string+" - "+new_answer+" , ")
archivo.close()
archivo = open("Alice.txt","r")
archivolocal = archivo.read()
print(archivolocal)
Alice = dict((a.strip(), (b.strip()))
for a, b in (element.split('-')
for element in archivolocal.split(', ')))
print(Alice)
我想转换这个存档 TXT:
hola - Hola! , como estás - ¿Bien, y tu? ,
到字典 但它告诉我,我不知道如何解决它,因为我想做一个程序,在存档中写出问题是什么,以后如果archive.txt没有答案,你把答案保存在archive.txt中,也保存在爱丽丝的字典中
我尝试做我所知道的关于 Python 的一切,但我知道的并不多,我尝试更改变量的名称,尝试一些东西,将 str 放在 () 之前,什么都没有,结果相同。
ValueError: not enough values to unpack (expected 2, got 1)
答:
0赞
ljmc
1/19/2023
#1
让我们来看看你的理解:
archivolocal.split(', ')
给['hola - Hola! ', 'como estás - ¿Bien', 'y tu? ', '']
- 对于每个,您将分别得到 、 和 。
element.split('-')
['hola ', ' Hola! ']
['como estás ', ' ¿Bien']
['y tu? ']
['']
最后两个 s 仅包含一个值,并且无法根据需要解压缩为两个值。element
for a, b in (element.split('-')
这就是使用如此简单的编组系统的问题。
但是,改进它很容易。您写入存档,因此您应该在调用中使用这些分隔符。new_string + " - " + new_answer + " , "
split
您还需要过滤掉第一次拆分后的最后一个“”。
在这种情况下,我会重新评论您使用 for 循环而不是理解,因为它们会使内容更易于阅读。
archivolocal = "hola - Hola! , como estás - ¿Bien, y tu? , "
conversation = {}
for el in archivolocal.split(" , "):
if el == "": # could be `if not el` since empty strings are falsy
continue
k, v = el.split(" - ", maxsplit=2) # maxsplit for safety
conversation[k.strip()] = v.strip()
conversation
包含
{'hola': 'Hola!', 'como estás': '¿Bien, y tu?'}
评论