Python:连接字符串输出

时间:2012-10-27 10:45:18

标签: python string-formatting

我有一个包含整数的类,另一个列表包含数据。

class Vertex:
    def __init__(self, ID = str()):
        self.id = ID
        self.neighbors = AdjacencyList()

邻接列表是另一个类。它有一个清单。

我想用一个print语句打印邻居中的id和列表。怎么可能?

这是我现在使用的代码(使用字符串连接)

def printGraph(g = Graph()):
    msg = str('')
    for k, v in g.nodes.iteritems():
        root_node = g.nodes[k]
        msg = "(" + k + " , " + str(root_node.color) + ") : "

        for x in v.neighbors.innerlist:
            msg += str(x.id) + " , "
        print msg

您可以看到我在print方法中使用的整个字符串分隔符。

4 个答案:

答案 0 :(得分:2)

您可以使用str.format()功能格式化输出: -

print "Id: {0}, Neighbour: {1}".format(self.id, self.neighbours)

这将在Python 2.6+中有效。对于旧版本,您可能需要使用@ Daniel答案中的那个。

Python 2.7,您也可以省略该位置参数,只使用{}: -

print "Id: {}, Neighbour: {}".format(self.id, self.neighbours)

答案 1 :(得分:2)

您还可以使用字符串格式:

print('id: %s, neigbors: %s' % (self.id, str(self.neighbors)))

答案 2 :(得分:1)

我认为你的代码可以改写如下:

def printGraph(g = Graph()):
    for k, v in g.nodes.iteritems():
        msg = "({0} , {1}) : {2}".format(k, v.color, ", ".join(["{0}".format(x.id) for x in v.neighbors.innerlist]))
        print msg

如您所见,只需一步构建整个字符串的技巧就是用列表解析替换最后的for循环,该列表解析在适当的位置转换为字符串并包含在初始字符串中。这样,您可以单独打印列表项而不是打印列表对象,因此您可以:

  • 为项目
  • 提供所需的输出格式
  • 打印商品属性

答案 3 :(得分:1)

我没有测试它 - 它有点难以理解,但在一行中它应该是类似

print '\n'.join(('({},{}):{}'.format(key, node.color,
                                     ','.join('{}'.format(x) for x in node.neighbors.innerlist)) 
                for key, node in g.nodes.iteritems())