2012-11-14 27 views
16

Tôi có một chuỗi gọi là Message.chuỗi trung tâm python bằng cách sử dụng định dạng thông số

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

Yeah, nó chỉ là một tuyên bố thử nghiệm ...

Và tôi đang cố gắng để tập trung nó cho một cửa sổ Terminal mặc định, tức là 80 chiều rộng, với tuyên bố này:

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

nào in:

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

tôi đang mong đợi một cái gì đó như:

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

Bất kỳ đề xuất nào?

+0

Nó làm việc rất tốt cho tôi, thử nghiệm với Python 2.7.2 trên Windows. Bạn có thể muốn thực sự * giải thích * vấn đề của bạn, nói rằng nó "không hoạt động" là không đủ. – unwind

+1

Hoạt động trên Python 3.2.3 trên Ubuntu Linux. –

+0

@unwind Chú ý đến cách nó được "căn giữa" và bạn sẽ nhận thấy rằng nó không thực sự tập trung. – NullUserException

Trả lời

17

Bạn cần phải tập trung từng dòng riêng biệt:

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

Điều này hoạt động xuất sắc và xử lý nhiều \ n, đó là vấn đề với mã ban đầu của tôi. – user1259332

0

Đây là một sự thay thế đó sẽ tự động trung tâm văn bản của bạn dựa trên chiều rộng dài nhất.

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>

Các vấn đề liên quan