Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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 pystache:在lambda中呈现上下文_Python_Mustache - Fatal编程技术网

Python pystache:在lambda中呈现上下文

Python pystache:在lambda中呈现上下文,python,mustache,Python,Mustache,这是非常相似的,但在提到的帖子中没有真正回答 我的目标:打印以下行: Al,John,Jack Tim,Tom,Todd 没有最后一个逗号 我试着这样做: ctx = { 'gangs': [ {'gangsters': [ {'name': 'Al' }, {'name': 'John'}, {'name': 'Jack'}]}, {'gangsters': [ {'name': 'Tim'}, {'name': 'Tom'} , {'name': '

这是非常相似的,但在提到的帖子中没有真正回答

我的目标:打印以下行:

Al,John,Jack
Tim,Tom,Todd
没有最后一个逗号

我试着这样做:

ctx = {
    'gangs': [
        {'gangsters': [ {'name': 'Al' }, {'name': 'John'}, {'name': 'Jack'}]},
        {'gangsters': [ {'name': 'Tim'}, {'name': 'Tom'} , {'name': 'Todd'}]},
    ]
}


class Lambdas(object):
    def __init__(self, renderer):
        self.renderer = renderer

    def rstrip(self):
        "Remove last character"
        print self.renderer.context
        return lambda s: self.renderer.render(s, self.renderer.context)[:-1]

renderer = pystache.Renderer(missing_tags='strict')

print renderer.render("""
    {{#gangs}}
        {{#rstrip}}{{#gangsters}}{{name}},{{/gangsters}}{{/rstrip}}
    {{/gangs}}
""", ctx, Lambdas(renderer))
输出:

ContextStack({'gangs': [{'gangsters': [{'name': 'Al'}, {'name': 'John'}, {'name': 'Jack'}]}, {'gangsters': [{'name': 'Tim'}, {'name': 'Tom'}, {'name': 'Todd'}]}]}, <__main__.Lambdas object at 0x15cadb10>, {'gangsters': [{'name': 'Al'}, {'name': 'John'}, {'name': 'Jack'}]})
ContextStack({'gangs': [{'gangsters': [{'name': 'Al'}, {'name': 'John'}, {'name': 'Jack'}]}, {'gangsters': [{'name': 'Tim'}, {'name': 'Tom'}, {'name': 'Todd'}]}]}, <__main__.Lambdas object at 0x15cadb10>, {'gangsters': [{'name': 'Al'}, {'name': 'John'}, {'name': 'Jack'}]})

Al,John,Jack
Al,John,Jack
ContextStack({'gangs':[{'gangsters':[{'name':'Al'},{'name':'John'},{'name':'Jack'},{'gangsters':[{'name':'Tim'},{'name':'Tom'},{'name':'Todd'}]},{'gangsters':[{'name':'Al'},{'name':'John'},{'name':'Jack})
ContextStack({'gangs':[{'gangsters':[{'name':'Al'},{'name':'John'},{'name':'Jack'}},{'gangsters':[{'name':'Tim'},{'name':'Tom'},{'name':'Todd'}]},{'gangsters':[{'name':'Al'},{'name':'John'},{'name':'Jack})
艾尔,约翰,杰克
艾尔,约翰,杰克
罪魁祸首是在rstrip中调用render()。注意,在第二次调用期间,ContextStack的3d元素与前一次调用完全相同

这是一只虫子,还是我遗漏了什么

回答上游:


这个问题让我整个上午都把头撞在桌子上XD感谢分享答案;)
def rstrip(self):
    "Remove last character"
    return lambda s: copy.deepcopy(self.renderer).render(s, self.renderer.context)[:-1]