我知道其他人已经问过这个错误,但我不确定为什么我一直在为这段代码得到这个错误。 我正在编写一个代码来打开和读取文本文件,然后用新的字母替换它中的每个字母。这些字母及其替换在我的词典“替换”中指定。
这是我现在的代码:
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个值。我对编程很新。有人可以解释为什么我会收到这个错误吗?
答案 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)
进行替换不需要循环遍历所有字母。它会找到转换所有匹配。
使用with open
会更容易,因为它会自动处理close
。
希望这些建议可以帮助您学习Python。