Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类型错误:';非类型';对象不可编辑-Python_Python_Nonetype - Fatal编程技术网

类型错误:';非类型';对象不可编辑-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声明…很抱歉,非常感谢!就这样!非常感谢你!就这样!