0

我有一个实时(每秒)显示数据的 python 脚本。我想对齐这些。我已经尝试使用 pprint 模块,但它不起作用。

示例:我的脚本显示如下:

Server1 Sessions/s-----------Server2 Sessions/s

    64                                20
    0                                20
    64                                20
    64                                20
    64                                20
    0                                19
    128                                19
    0                                19
    256                                19
    192                                19

有可能得到这个结果吗?

Server1 Sessions/s----------Server2 Sessions/s

    64                               20
    0                                20
    64                               20
    64                               20
    64                               20
    0                                19
    128                              19
    0                                19
    256                              19
    192                              19

每个值每秒打印一次。我在列表或字典中没有所有这些。

我要显示的代码:

print("Server1 Sessions/s-----------------Server2 Sessions/s")
while i < self.timer:
    print("        " + str(self.serverrqs()*int(self.nbpro)) + "                                "+ str(self.servernbrqs()))
    i += 1
    sleep(1)

提前致谢

4

4 回答 4

1

它应该是由格式字符串中的'-'指定的左对齐

print('        %-40s%s' % (self.serverrqs()*int(self.nbpro), self.servernbrqs()))
于 2012-08-31T10:04:27.497 回答
1

您可以按摩以下内容以适应:

from random import randint

for line in range(4):
    value1, value2 = randint(0, 16)*16, randint(19,20)
    print("    %-4i        %-4i" % (value1, value2))

其输出如下所示:

    144           20
    0             20
    96            20
    128           19

Google for:Python 字符串插值,了解更多信息。

于 2012-08-31T10:04:28.013 回答
1

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

>>> '%40s' % 'ab'
'                                      ab'
于 2012-08-31T09:52:35.087 回答
0

使用新式 (>=2.7)格式

def format_row(leftval, rightval, width=30, fill=u' '):
    """"""
    row = u'        {0}{1:{fill}>{width}}'
    width = width - len(unicode(leftval))
    return row.format(leftval, rightval, fill=fill, width=width)

print format_row(1, 20)
print format_row(100, 20)
print format_row(100, 200)
于 2012-08-31T10:12:10.530 回答