python - ValueError : need more than 1 value to unpack, 分割一行

标签 python

我有一个在同一行包含问题和答案的文件,我想将它们分开并将它们附加到它们自己的空列表中,但不断出现此错误:
builtins.ValueError:需要超过 1 个值才能解包

questions_list = []
answers_list = []

questions_file=open('qanda.txt','r')


for line in questions_file:
    line=line.strip()

    questions,answers =line.split(':')

    questions_list.append(questions)
    answers_list.append(answers)

最佳答案

这可能是因为当你在做拆分时,没有:,所以函数只返回一个参数,而不是两个。这可能是由最后一行引起的,意思是你是最后一行,只有空格。像这样:

>>> a = '   '
>>> a = a.strip()
>>> a
''
>>> a.split(':')
['']

如您所见,从 .split 返回的列表只是一个空字符串。因此,为了向您展示演示,这是一个示例文件:

a: b
c: d
e: f

g: h

我们尝试使用如下脚本(val.txt为上述文件名):

with open('val.txt', 'r') as v:
    for line in v:
        a, b = line.split(':')
        print a, b

这给了我们:

Traceback (most recent call last):
a  b

c  d
  File "C:/Nafiul Stuff/Python/testingZone/28_11_13/val.py", line 3, in <module>

    a, b = line.split(':')
e  f
ValueError: need more than 1 value to unpack

当尝试通过调试器查看时,变量 line 变为 \n,您无法拆分它。

但是,一个简单的逻辑修正可以解决这个问题:

with open('val.txt', 'r') as v:
    for line in v:
        if ':' in line:
            a, b = line.strip().split(':')
            print a, b

关于python - ValueError : need more than 1 value to unpack, 分割一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20270871/

相关文章:

python - 使用来自 FLD 的最高特征值为 2D 数据投影多个集群

python - 使用 super() 缺少父类(super class)的参数

python - 如何使用 Python 比较来自同一字典键的嵌套字典值

python 请求 POST cookie session

python - 使用具有完全访问权限的 Boto3 将文件上传到 AWS S3

python - 我如何告诉 sqlalchemy 忽略 INSERT 上的某些(例如,空)列

python - 你如何创建一个 Tkinter GUI 停止按钮来打破无限循环?

python - 将函数应用于 DataFrame 中的每个单元格

python - 使用 Python(不使用 Pandas、Numpy 等)根据选项卡分层文件中的第一列计算行数

python - 如何按条件从其他列创建新列