2012-11-14 5 views
16

Ich habe eine Zeichenfolge namens Message.Python-Center-String mit Format-Spezifizierer

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

Ja, es ist nur ein Test Aussage ...

Und ich versuche, es für ein Fenster Standard-Terminal zum Zentrum, das heißt von 80 Breite, mit dieser Aussage:

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

, der Druck:

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

ich erwarte etwas wie:

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

Irgendwelche Vorschläge?

+0

Es funktionierte sehr gut für mich, mit Python 2.7.2 auf Windows getestet. Vielleicht möchten Sie Ihr Problem tatsächlich * erklären * und sagen, dass es "nicht funktioniert" ist nicht genug. – unwind

+1

Funktioniert auf Python 3.2.3 unter Ubuntu Linux. –

+0

@unwind Achten Sie genau darauf, wie es "zentriert" ist und Sie werden feststellen, dass es nicht wirklich zentriert ist. – NullUserException

Antwort

17

Sie müssen separat jede Zeile zum Zentrum:

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

Dies funktioniert hervorragend und behandelt mehrere \ ns, was das Problem mit meinem ursprünglichen Code war. – user1259332

0

Hier ist eine Alternative, die Ihr Auto Center Text auf der längsten Breite basieren wird.

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>