Why are some Python strings are printed with quotes and some are printed without quotes?

大城市里の小女人 提交于 2019-11-30 04:13:09

问题


I have a problem with string representations. I am trying to print my object and I sometimes get single quotes in the output. Please help me to understand why it happens and how can I print out the object without quotes.

Here is my code:

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)

Here is what I do:

from Tree import Tree
t = Tree('X', Tree('Y','y'), Tree('Z', 'z'))
print t

Here is what I get:

(X (Y 'y') (Z 'z'))

Here is what I want to get:

(X (Y y) (Z z))

Why do the quotes appear around the values of terminal nodes, but not around the values of non-terminals?


回答1:


repr on a string gives quotes while str does not. e.g.:

>>> s = 'foo'
>>> print str(s)
foo
>>> print repr(s)
'foo'

Try:

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)

instead.



来源:https://stackoverflow.com/questions/17171889/why-are-some-python-strings-are-printed-with-quotes-and-some-are-printed-without

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!