我如何修复ValueError:在Python中解压缩的值太多了?

Pok*_*ace 11 python python-3.x

我正在尝试使用我的文本文件("out3.txt")的内容填充字典.

我的文本文件格式如下:

vs,14100

mln,11491

the,7973

cts,7757
Run Code Online (Sandbox Code Playgroud)

...等等...

我希望我的字典answer具有以下形式:

answer[vs]=14100

answer[mln]=11491
Run Code Online (Sandbox Code Playgroud)

...等等...

我的代码是:

import os
import collections
import re
from collections import defaultdict

answer = {}
answer=collections.defaultdict(list)
with open('out3.txt', 'r+') as istream:
    for line in istream.readlines():
        k,v = line.strip().split(',')
        answer[k.strip()].append( v.strip())
Run Code Online (Sandbox Code Playgroud)

但是,我得到:

ValueError:要解压缩的值太多

我怎样才能解决这个问题?

Joh*_*web 12

line的输入文件中有空的,我怀疑line你没有与我们共享的一个中有太多的逗号(因此"解压缩的值太多了").

你可以防范这种情况,如下:

import collections

answer = collections.defaultdict(list)
with open('out3.txt', 'r+') as istream:
    for line in istream:
        line = line.strip()
        try:
            k, v = line.split(',', 1)
            answer[k.strip()].append(v.strip())
        except ValueError:
            print('Ignoring: malformed line: "{}"'.format(line))

print(answer)
Run Code Online (Sandbox Code Playgroud)

注:通过传递1str.split(),一切后,第一个逗号将被分配到v; 如果这不是所需的行为,并且您希望拒绝这些行,则可以删除此参数.