propertiesTextBlock = """
Basic Properties
----------------
- nodes (n) {n}
- edges (m) {m}
- min. degree {minDeg}
- max. degree {maxDeg}
- isolated nodes {isolates}
- self-loops {loops}
- density {dens:10.6f}
"""
使用string.format
插入了几个数据项。输出到控制台然后看起来像:
Basic Properties
----------------
- nodes (n) 10680
- edges (m) 24316
- min. degree 1
- max. degree 205
- isolated nodes 0
- self-loops 0
- density 0.000426
不完美,因为我需要在文本块中手动插入恰当数量的选项卡。另外,如果我想以不同方式对齐数字(例如右对齐所有内容,在.
处对齐...),该怎么办?
有没有一种简单的方法可以确保这个表看起来不错?
答案 0 :(得分:2)
您可以使用format mini language指定路线:
>>> print '- nodes (n) {n:>20}\n- edges (m) {m:>20}'.format(n=1234, m=234)
- nodes (n) 1234
- edges (m) 234
>20
格式规范将字段宽度设置为20个字符,并右对齐该字段中的值。
但 支持小数点对齐。您可以 指定动态字段宽度:
>>> print '- nodes (n) {n:>{width}}'.format(n=123, width=5)
- nodes (n) 123
>>> print '- nodes (n) {n:>{width}}'.format(n=123, width=10)
- nodes (n) 123
您可以调整以添加或删除浮点数周围的空格:
>>> from math import log10
>>> print '- density {density:>{width}.6f}'.format(density=density, width=10-int(log10(int(density))))
- density 0.000426
>>> density = 10.000426
>>> print '- density {density:>{width}.6f}'.format(density=density, width=10-int(log10(int(density))))
- density 10.000426
此处调整字段宽度以根据整个值将占用多少空间来向左或向右移动小数点。请注意,字段宽度是总宽度,因此包括小数点和6位小数。
答案 1 :(得分:1)
正确的答案可能是使用prettytable
或tabulate
。
如果您希望使用普通旧格式,则可以控制字段宽度:
>>> print "node:{0:16}".format(10680,);
node: 10680
# ^^^^^^^^^^^^^^^^
# 16 characters
对于 float 值,您可以对齐小数点:
>>> print "node:{0:16.2f}".format(10680.); \
... print "node:{0:16.2f}".format(10.5)
... print "node:{0:16.2f}".format(123.456)
node: 10680.00
node: 10.50
node: 123.46
# ^^^^^^^^^^^^^^^^
# 16 characters
以下是“格式迷你语言”的正式说明:http://docs.python.org/2/library/string.html#formatstrings