为什么ValueError:需要多于1个值才能解压缩

时间:2013-12-06 11:16:22

标签: python

我知道其他人已经问过这个错误,但我不确定为什么我一直在为这段代码得到这个错误。 我正在编写一个代码来打开和读取文本文件,然后用新的字母替换它中的每个字母。这些字母及其替换在我的词典“替换”中指定。

这是我现在的代码:

def decode(text):
    replacements={'a':'L','b':'A','c':'O','d':'Z','e':'M','f':'V','g':'R','h':'B','i':'U','j':'S','k':'Q','l':'K','m':'Y','n':'J','o':'W','p':'H','q':'E','r':'X','s':'T','t':'P','u':'F','v':'I','w':'G','x':'C','y':'D','z':'N'}
    infile=open(text).read()
    outfile=open("output.txt",'w')
    for letter in infile:
        for old,new in replacements:
            newtext=infile.replace(old,new)
            outfile.write(newtext)
    infile.close()

当我运行代码时,错误消息出现在“旧的,新的替换”行中,并告诉我解压缩需要多于1个值。我对编程很新。有人可以解释为什么我会收到这个错误吗?

2 个答案:

答案 0 :(得分:5)

 for old,new in replacements:

将词典中的键。

 for old,new in replacements.iteritems():

将迭代dict中的键和值

答案 1 :(得分:0)

我认为雅各布的答案解决了这个问题,但我想稍微重新安排一下代码。

def decode(text):
    replacements={'a':'L','b':'A','c':'O','d':'Z','e':'M','f':'V','g':'R','h':'B','i':'U','j':'S','k':'Q','l':'K','m':'Y','n':'J','o':'W','p':'H','q':'E','r':'X','s':'T','t':'P','u':'F','v':'I','w':'G','x':'C','y':'D','z':'N'}
    with open(text, 'r') as infile:
        instr = infile.read()
        for old,new in replacements.iteritems():
            instr = instr.replace(old, new)    
        with open("output.txt", 'w') as outfile:
            outfile.write(instr)
  1. 进行替换不需要循环遍历所有字母。它会找到转换所有匹配。

  2. 使用with open会更容易,因为它会自动处理close

  3. 希望这些建议可以帮助您学习Python。