我使用以下方法打印嵌套列表:
def stringify(self, item=None):
if isinstance(item, list):
return [self.stringify(subitem) for subitem in item]
if isinstance(item, Token):
return str(item)
它根据__str__
方法打印如下项:
["<PLUS: '+'>", "<NUMBER: '2.0'>", ["<TIMES: '*'>", "<NUMBER: '3.0'>", "<NUMBER: '4.0'>"]] ["<USER_DEFINED: 'factorial'>", "<NUMBER: '5.0'>"]
但是,我不希望它在项目本身周围显示"
。也就是说,我希望它可以这样打印:
[<PLUS: '+'>, <NUMBER: '2.0'>, ...
我该怎么做
最后,您将返回一个字符串列表,而不是将列表转换为字符串
list.__str__
总是在其元素上调用repr
,因此可以得到显式引号。为了避免这种情况,可以使用str.join
绕过repr
:是的,您可以通过将^{} 方法添加到
Token
对象上来实现这一点:现在您甚至不需要在
stringify
方法中调用str(item)
,并且可以将其更改为仅返回对象本身:运行它,您现在将获得:
相关问题 更多 >
编程相关推荐