Python 为什么值错误:需要超过1个值才能解包
我知道其他人也问过这个错误,但我不确定为什么我总是在这段代码中遇到这个错误。 我正在编写一个代码来打开并读取一个文本文件,然后用一个新的字母替换其中的每个字母。字母及其替换在我的字典“替换”中指定 这是我现在的代码:Python 为什么值错误:需要超过1个值才能解包,python,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','
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()
当我运行代码时,错误消息出现在“for old,new in replacements”行中,并告诉我需要超过1个值才能解包。我对编程很陌生。。有人能解释一下我为什么会犯这个错误吗
for old,new in replacements:
我会把钥匙放在录音机里
for old,new in replacements.iteritems():
将迭代dict中的键和值
我会把钥匙放在录音机里
for old,new in replacements.iteritems():
将迭代dict中的键和值我认为Jakob的答案解决了问题,但我想重新排列一下代码
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)
更容易,因为它会自动处理关闭
希望这些建议能帮助您学习Python。我认为Jakob的回答解决了问题,但我想重新安排一下代码
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)
更容易,因为它会自动处理关闭
希望这些建议能帮助您学习Python。在您的实际代码中,什么是
替换?它看起来像半本字典/半套。你能编辑这个问题,使它完全符合你的代码吗?对不起,我试图节省时间,而不是把它全部打印出来。我改变了它在你的真实代码中什么是替换?它看起来像半本字典/半套。你能编辑这个问题,使它完全符合你的代码吗?对不起,我试图节省时间,而不是把它全部打印出来。我变了it@Patrick不,那没什么区别。新的错误在其他地方。@user3074142我想新的错误是您假定infle
是file
对象,但您已经通过.read()
@user3074142将其转换为str
,这太奇怪了!你目前的错误是什么?修改后的代码在我的机器上运行良好。可能OP使用的是python3,因此他应该使用items()
而不是iteritems()
。然而,如果没有对错误的完整追溯,这只是一个猜测。顺便说一句:items()
也可以在python2中工作,因此是一种更通用的解决方案,尽管在python2中效率较低。因为这个问题没有指定一个版本,所以我会使用最通用的解决方案,并提到iteritems()
作为python2的更有效的解决方案。@Patrick不,这不会有什么区别。新的错误在其他地方。@user3074142我想新的错误是您假定infle
是file
对象,但您已经通过.read()
@user3074142将其转换为str
,这太奇怪了!你目前的错误是什么?修改后的代码在我的机器上运行良好。可能OP使用的是python3,因此他应该使用items()
而不是iteritems()
。然而,如果没有对错误的完整追溯,这只是一个猜测。顺便说一句:items()
也可以在python2中工作,因此是一种更通用的解决方案,尽管在python2中效率较低。由于这个问题没有指定一个版本,我将使用最通用的解决方案,并提到iteritems()
作为python2的更有效的解决方案。