【问题标题】:How to create columns of text from a dictionary Python 2.4 [duplicate]如何从字典Python 2.4创建文本列[重复]
【发布时间】:2025-12-21 20:40:07
【问题描述】:

我目前正在尝试用 python 重写一些工具,唯一的挑战是我仅限于 Python 2.4。

bash 版本的当前输出如下所示:

Host           Active VMs     SW            Ver       Processor        Cores     Mhz          Tot Mem     Free Mem     Network
cloudmatt1     1              XenServer     1.8.0     GenuineIntel     2         2660.040     5.45G       3.57G        openvswitch     
cloudmatt2     3              XenServer     1.8.0     GenuineIntel     2         2660.046     5.45G       1.55G        openvswitch  

这是我的示例字典:

{'d50787a5-9187-4486-9d36-e8287701bcbd': {'UUID': 'd50787a5-9187-4486-9d36-e8287701bcbd', 'Network-Backend': 'openvswitch', 'Platform-Version': '1.8.0', 'Host-CPUs': 2, 'Name-label': 'cloudmatt1', 'Resident-VMs': 2}, 'e9e54df0-ab87-4e68-a604-2e1821ce2da9': {'UUID': 'e9e54df0-ab87-4e68-a604-2e1821ce2da9', 'Network-Backend': 'openvswitch', 'Platform-Version': '1.8.0', 'Host-CPUs': 2, 'Name-label': 'cloudmatt2', 'Resident-VMs': 4}}

如何以与 Python 2.4 类似的方式显示数据?

【问题讨论】:

    标签: python bash dictionary


    【解决方案1】:

    看起来您有一些左对齐的列,每个列都有特定的大小。您可以从 Python 的字符串格式中获得类似的效果。示例:

    >>> print "%-10s %-3s %-10s" % ('foo', 2, 'bar')
    foo        2   bar
    

    您可以使用星号动态决定列的宽度:

    >>> print "%-*s %-*s %-*s" % (10, 'foo', 3, 2, 10, 'bar')
    foo        2   bar
    

    在这种情况下,提前确定列的宽度可能更容易,但您也可以检查每行值的长度来确定列的宽度。

    注意:在 2.5 中检查了这一点,但这些应该也可以在 2.4 中使用。

    【讨论】:

      【解决方案2】:

      在 Python 2.4 中,您可以使用 %sN 左对齐文本,其中 N 是您要使用的填充。例如:

      print "%s-20" % "foo"
      

      【讨论】:

      • 我相信你的意思是写'%-20s'。