Mam skrypt Pythona, który wyświetla dane w czasie rzeczywistym (co sekundę). Chcę je wyrównać. Spróbuję z modułem PPRINT, ale nie działa.

Przykład: mój skrypt wyświetla to:

Sesje / S ------------------------ Sesje Server2 / S

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

Czy to możliwe, aby ten wynik?

Sesje serwera / S ----------------------- Sesje Server2 / s

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

Każda wartość jest drukowana co sekundę. Nie wszystkie z nich nie wszystkie z listy lub słownikiem.

Mój kod do wyświetlenia:

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)

Z góry dziękuję

0
Matt 31 sierpień 2012, 13:48

4 odpowiedzi

Najlepsza odpowiedź

Powinien to być lewy wyrównanie, które określone przez "-" ciąg formatu

print('        %-40s%s' % (self.serverrqs()*int(self.nbpro), self.servernbrqs()))
1
wrongite 31 sierpień 2012, 10:04

Możesz wystarczyć formatowanie string:

>>> '%40s' % 'ab'
'                                      ab'
1
djc 31 sierpień 2012, 09:52

Możesz masować następujące czynności:

from random import randint

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

Wyjście, którego wygląda:

    144           20
    0             20
    96            20
    128           19

Google dla: interpolacja strun Pythona, aby uzyskać więcej informacji.

1
Paddy3118 31 sierpień 2012, 10:04

Z nowym stylem (& GT; = 2,7) Formatowanie

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)
0
Rob Cowie 31 sierpień 2012, 10:12