类型错误:';非类型';对象不可编辑-Python
我知道以前有人问过这个问题,但我的问题似乎无法解决。有人能帮我解决这个问题吗类型错误:';非类型';对象不可编辑-Python,python,nonetype,Python,Nonetype,我知道以前有人问过这个问题,但我的问题似乎无法解决。有人能帮我解决这个问题吗 import sys class Template: def processVariable(self, template, data): first = template.find('{{') second = template.find('}}') second = second + 2 out = template[first+second
import sys
class Template:
def processVariable(self, template, data):
first = template.find('{{')
second = template.find('}}')
second = second + 2
out = template[first+second]
assert[out.startswith('{{')]
out = out.strip('{}')
rest = template[second:]
if out in data:
newstring = data[out]
return(rest, newstring)
else:
print "Invalid Data Passed it"
t = Template()
vars = {
'name': 'Jane',
'course': 'CS 1410',
'adjective': 'shimmering'
}
(rest, out) = t.processVariable('{{name}} is in {{course}}', vars)
这就是我得到的错误:
File "template.py", line 28, in <module>
(rest, out) = t.processVariable('{{name}} is in {{course}}', vars)
TypeError: 'NoneType' object is not iterable
它应该返回的是:
rest is: [ is in {{course}}]
out is : [Jane]
如果有效,它将返回Yes或No。您没有从
其他
部分返回任何内容,因此默认情况下,您的函数将返回None
当然,您不能将None
解包为两个变量。尝试从else部分返回一个元组,如下所示:
if out in data:
newstring = data[out]
return (rest, newstring)
else:
print "Invalid Data Passed it"
return (None, None)
您没有从
else
部分返回任何内容,因此默认情况下,您的函数将返回None
当然,您不能将None
解包为两个变量。尝试从else部分返回一个元组,如下所示:
if out in data:
newstring = data[out]
return (rest, newstring)
else:
print "Invalid Data Passed it"
return (None, None)
您的代码中有错误 这: 应该是:
out = template[first:second]
assert out.startswith('{{')
以及:
应该是:
else:
raise ValueError('Invalid data')
此外,Python中已有此功能:
from string import Template
t = Template('$name is in $course')
vars = {
'name': 'Jane',
'course': 'CS 1410',
'adjective': 'shimmering'
}
print(t.substitute(vars))
输出:
Jane is in CS 1410
您的代码中有错误 这: 应该是:
out = template[first:second]
assert out.startswith('{{')
以及:
应该是:
else:
raise ValueError('Invalid data')
此外,Python中已有此功能:
from string import Template
t = Template('$name is in $course')
vars = {
'name': 'Jane',
'course': 'CS 1410',
'adjective': 'shimmering'
}
print(t.substitute(vars))
输出:
Jane is in CS 1410
明白了!所以我做了更改,现在我得到了这个错误:传递的数据无效。您在哪里使用返回的元组?还有,你到底想做什么?@NickMcArthur。好的,看起来没问题。您只收到您在“其他”部分中打印的消息。函数返回
(无,无)
元组。函数调用后,尝试打印变量rest
和out
的值。感谢您的帮助!我很感激!明白了!所以我做了更改,现在我得到了这个错误:传递的数据无效。您在哪里使用返回的元组?还有,你到底想做什么?@NickMcArthur。好的,看起来没问题。您只收到您在“其他”部分中打印的消息。函数返回(无,无)
元组。函数调用后,尝试打印变量rest
和out
的值。感谢您的帮助!我很感激!我没有看到任何for循环。你发布了完整的代码吗?我是说if语句…对不起,我没有看到任何for循环。你发布了完整的代码吗?我是说if声明…很抱歉,非常感谢!就这样!非常感谢你!就这样!