Why are some Python strings are printed with quotes and some are printed without quotes?
我对字符串表示法有问题。我试图打印我的对象,有时我会在输出中得到单引号。请帮助我理解为什么会发生这种情况,以及如何在不带引号的情况下打印出对象。
这是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 | class Tree: def __init__(self, value, *children): self.value = value self.children = list(children) self.marker ="" def __repr__(self): if len(self.children) == 0: return '%s' %self.value else: childrenStr = ' '.join(map(repr, self.children)) return '(%s %s)' % (self.value, childrenStr) |
我要做的是:
1 2 3 | from Tree import Tree t = Tree('X', Tree('Y','y'), Tree('Z', 'z')) print t |
我得到的是:
1 | (X (Y 'y') (Z 'z')) |
以下是我想要的:
1 | (X (Y y) (Z z)) |
为什么引号出现在终端节点的值周围,而不是非终端的值周围?
字符串上的
1 2 3 4 5 | >>> s = 'foo' >>> print str(s) foo >>> print repr(s) 'foo' |
尝试:
1 2 3 4 5 6 | def __repr__(self): if len(self.children) == 0: return '%s' %self.value else: childrenStr = ' '.join(map(str, self.children)) #str, not repr! return '(%s %s)' % (self.value, childrenStr) |
相反。