2012-11-14 14 views
16

Ho una stringa denominata Messaggio.python centre string utilizzando lo specificatore di formato

Message = "Hello, welcome!\nThis is some text that should be centered!" 

Sì, è solo una dichiarazione di prova ...

E io sto cercando di centrarla per una finestra di terminale di default, vale a dire di 80 di larghezza, con questa dichiarazione:

print('{:^80}'.format(Message)) 

che stampa:

  Hello, welcome! 
This is some text that should be centered!   

mi aspetto qualcosa di simile:

       Hello, welcome!         
        This is some text that should be centered!     

Qualche suggerimento?

+0

ha funzionato molto bene per me, testata con Python 2.7.2 su Windows. Potresti voler effettivamente * spiegare * il tuo problema, dicendo che "non funziona" non è abbastanza. – unwind

+1

Funziona su Python 3.2.3 su Ubuntu Linux. –

+0

@unwind Prestate molta attenzione a come è "centrato" e noterete che non è veramente centrato. – NullUserException

risposta

17

È necessario centrare ogni riga separatamente:

'\n'.join('{:^80}'.format(s) for s in Message.split('\n')) 
+0

Funziona in modo eccellente e gestisce più \ ns, che era il problema con il mio codice originale. – user1259332

0

Qui è un'alternativa che centrerà automaticamente il testo in base alla larghezza più lunga.

def centerify(text, width=-1): 
    lines = text.split('\n') 
    width = max(map(len, lines)) if width == -1 else width 
    return '\n'.join(line.center(width) for line in lines) 

print(centerify("Hello, welcome!\nThis is some text that should be centered!")) 
print(centerify("Hello, welcome!\nThis is some text that should be centered!", 80)) 

<script src="//repl.it/embed/IUUa/4.js"></script>

Problemi correlati