转换text.file文件在字典中遇到太多要解包的值(应为2)

2024-05-07 05:59:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我是编程和python方面的新手 我试着把我的文本文件转换成字典

我试过了

dictionary = {}
with open(r"C:\Users\acer\Desktop\WIEN2k.txt") as file:
    for line in file:
        key, value = line.strip().split(" ")
        dictionary[key] = value
print(dictionary

但我错了

ValueError Traceback (most recent call last) in 2 with open(r"C:\Users\acer\Desktop\WIEN2k.txt") as file: 3 for line in file: ----> 4 key, value = line.strip().split(" ") 5 dictionary[key] = value 6 print(dictionary)

ValueError: too many values to unpack (expected 2)

有人能帮我解决这个错误吗?你知道吗


Tags: keyintxtfordictionaryvalueaswith
2条回答

正如@BoarGules和@frankegoesdown所解释的,行中有多个空格。如果你想让每行的第一个词成为关键词,其余的词成为你的字典的价值,你可以这样做:

dictionary = {}
with open(r"C:\Users\acer\Desktop\WIEN2k.txt") as file:
    for line in file:
        key, value = line.strip().split(" ", maxsplit=1)
        dictionary[key] = value
print(dictionary)

要调试此类问题,只需存储中间结果并打印,如:

dictionary = {}
with open(r"C:\Users\acer\Desktop\WIEN2k.txt") as file:
    for line in file:
        fields= line.strip().split(" ")
        print('list {l] has {n} elements'.format(l=fields, n=len(fields))
        key, value = fields
        dictionary[key] = value
print(dictionary)

并执行代码或在调试器中运行它。从上面的输出中,您将看到,您的一些行生成了包含两个以上元素的列表,并且在打印这些行之后,您就得到了您提到的错误。你知道吗

文件中的行中有超过1个空格。当你想分手的时候。得到1、2、3、4和更多的值,但在拆分后只有2个值

dictionary = {}
with open(r"C:\Users\acer\Desktop\WIEN2k.txt") as file:
    for line in file:
        values = line.strip().split(" ")
        if values:
            dictionary[value[0]] = values[1:]
print(dictionary)

https://python-reference.readthedocs.io/en/latest/docs/str/split.html更多关于string.split()

相关问题 更多 >