ValueError:需要多于 1 个值才能解包

ValueError:需要多于 1 个值才能解包

当我运行此代码时:

~/cdec/training/mira/mira.py -d dev.lc-tok.es-en.sgm -t devtest.lc-tok.es-en.sgm -c cdec.ini -j 2

我收到此错误消息:

 File "~/prefix/sw/cdec/training/mira/mira.py", line 551, in <module>
    main()
  File "~/prefix/sw/cdec/training/mira/mira.py", line 204, in main
    args.weights, hope_best_fear = optimize(args, script_dir, dev_size)
  File "~/prefix/sw/cdec/training/mira/mira.py", line 327, in optimize
    (source, refs) = split_devset(args.devset, args.output_dir)
  File "~/prefix/sw/cdec/training/mira/mira.py", line 314, in split_devset
    s,r = line.strip().split(' ||| ',1)
ValueError: need more than 1 value to unpack

这发生在这个脚本

我可以修复这个问题吗?

答案1

从字面上讲,这里发生的事情是代码期望从后面得到两个值line.strip().split(' ||| ',1)(因此它可以将这些值分配给sr),但它只得到一个。因此它爆炸了。

发生这种情况是因为您没有正确使用脚本。如果您查看--help(或进一步查看代码,第 90 行),您会发现它需要一种非常具体的格式:

parser.add_argument('-d', '--devset', required=True,
                    help='dev set input file in parallel. '
                    'format: src ||| ref1 ||| ref2')

你没有遵循这一点,所以它无法分裂,因此会爆炸。

相关内容