用Python格式化表格格式的文本

2024-09-28 03:18:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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插入多个数据项。然后输出到控制台如下所示:

^{pr2}$

不完美,因为我需要在文本块中手动插入正确数量的制表符。另外,如果我想以不同的方式对齐数字(例如右对齐所有内容,在.对齐…)怎么办 有没有简单的方法可以确保这张桌子看起来很漂亮?在


Tags: selfbasicpropertiesmindensitymaxnodesedges
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个字符,并将该字段中的值右对齐。在

然而,这并不支持小数点对齐。您可以指定动态场宽度:

^{pr2}$

您可以调整它来添加或删除浮点数周围的空白:

>>> 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个小数点。在

正确的答案可能是使用^{}或{a2}。在

如果您想保持原始格式,可以控制字段宽度:

>>> print "node:{0:16}".format(10680,);
node:           10680
#    ^^^^^^^^^^^^^^^^ 
#      16 characters

对于float值,可以与小数点对齐:

^{pr2}$

以下是“格式迷你语言”的正式描述:http://docs.python.org/2/library/string.html#formatstrings

相关问题 更多 >

    热门问题