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
并不完美,因为我需要在文本 block 中手动插入适量的制表符。另外,如果我想以不同的方式对齐数字怎么办(例如右对齐所有内容,在 .
处对齐...)
有没有一种简单的方法可以确保这张 table 看起来不错?
最佳答案
您可以使用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
您可以调整它来添加或删除 float 周围的空格:
>>> 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 位小数。
关于python - 使用 Python 将文本格式化为表格形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18232657/