在文本文件中拆分行时的ValueError [关闭]

问题描述 投票:0回答:2

我想通过“ - ”将文本文件的每一行拆分为两行,但我不断收到此错误:

File "quiz.py", line 21, in Vocab
    questions, answers = line.split("-")
    ValueError: too many values to unpack (expected 2)

我对编码很新,可以使用一些帮助。欢迎所有提示!

import hashlib

testFile = ""
def qSearch():
    options = input ("Vocab/Grammar/or Special? (v/g/s)")
    if options == "v":
        testFile = "Vocabtest"
        Vocab()
    elif options == "g":
        Grammar()
        testFile = "Grammartest"
    elif options == "s":
        Special()
        testFile = "Specialtest"
    else:
        qSearch()

def Vocab():
        with open('Vocabtest.txt','r') as f:
            for line in f:
                questions, answers = line.split("-") ### error
                print (questions)

qSearch()

我的文本文件中的文本格式如下:

Magandang umaga - Good Morning

Magandang hapon - Good Afternoon

Magandang gabi - Good evening

Magandang umaga sa’yo - Good Morning to you

Magandang hapon din sa’yo - Good Afternoon to you to
python string parsing
2个回答
1
投票

“解包”是您编写 value1, value2 = a_list 时所做的事情的名称

当你做这样的任务时,你隐含地假设a_list中包含了多少个值 - 这里是2.如果有多于或少于2个,那么就没有好的方法来给value1value2值而不做令人惊讶和无益的事情(比如留下一个空的,或者保留一些未分配的列表元素)。

所以too many values to unpack意味着你的文件中至少有一行line.split('-')导致超过2个元素 - 也就是说,至少有一行有一个以上的-


1
投票

问题是因为在输入文本(.txt)文件的第21行,你有多个-,但你只想到一个。

更安全的方法是只拆分一次:

questions, answers = line.split("-", 1)
© www.soinside.com 2019 - 2024. All rights reserved.