2012-09-28 75 views
10

Tôi đang viết một số báo cáo và tôi muốn biết liệu có cách nào đơn giản hơn để có được hành vi sau không.Định dạng chuỗi lồng nhau

>>> '{:-^60}'.format('Percentage used: {:.2%}'.format(.4)) 
'------------------Percentage used: 40.00%-------------------' 

Như bạn có thể thấy tôi đang căn giữa văn bản và sau đó in số được tạo thành phần trăm. Nhưng tôi đang sử dụng một hàm định dạng bên trong một hàm khác. Nếu có thể tôi muốn làm tương tự trong một chức năng duy nhất, loại sau đây.

'$SOMETHING GOES HERE'.format(header = 'Percentage Used:',percentage = .4) 

Tất nhiên tôi đang tìm kiếm một giải pháp chung, mà sẽ làm việc với tất cả, hoặc hầu hết, các tùy chọn các định dạng, không chỉ để liên kết

Cảm ơn.

+2

Nó có vẻ như vấn đề của bạn là vốn lồng nhau. Hãy tưởng tượng bạn muốn định dạng một cặp gồm hai con số, cho mỗi ít nhất 3 ký tự, và khiến cho toàn bộ cặp mất ít nhất 10. Tôi không thể thấy cách bạn viết cái gì khác ngoài cái gì đó như '' {: 10} ' .format ('({: 3}, {: 3})' định dạng (1,2)) '. Đó là điều tương tự ở đây. Đó là toàn bộ chuỗi bạn cần phải căn giữa, không phải bất kỳ phần tử cụ thể nào, vì vậy bạn phải định dạng chuỗi được định dạng. @ wim đúng là 'trung tâm' có lẽ dễ đọc hơn, nhưng nó có hiệu quả tương đương. – abarnert

+0

Cảm ơn, chủ yếu là tôi đang tìm kiếm một số ý tưởng. Tôi không thấy làm thế nào bạn có thể làm điều đó, nhưng có thể các chức năng khác hoặc một cái gì đó có thể làm các trik. Giống như từ @wim. Tuy nhiên tôi nghĩ rằng những gì tôi muốn làm được giới hạn bởi chức năng định dạng chính nó. – Darkade

+0

Nếu bạn đang tìm kiếm thứ gì đó mạnh mẽ và linh hoạt hơn (nhưng phức tạp) so với định dạng 'dựng sẵn', trong một vài năm vào khoảng thời gian' định dạng' đang được thảo luận, mọi người đề xuất tất cả các loại thay thế và các thư viện được mã hóa thực hiện hầu hết trong số họ. Hãy thử tìm kiếm PyPI, và có lẽ bộ sưu tập công thức ActiveState (bởi vì điều này đã xảy ra trong khi PyPI vẫn đang trong quá trình phát triển) và có thể bạn sẽ tìm thấy thứ gì đó mà bạn cần. (Tôi không có bất kỳ khuyến nghị cụ thể nào.) – abarnert

Trả lời

8

Một lựa chọn dễ đọc hơn có thể là str.center

>>> 'Percentage used: {:.2%}'.format(.4).center(60, '-') 
'------------------Percentage used: 40.00%-------------------' 
+2

Cảm ơn, mà giải quyết vấn đề ở bàn tay. Tuy nhiên nó không hoàn toàn chung chung. Nhưng như @abarnert đã nhận xét, những gì tôi muốn làm có lẽ vốn đã lồng nhau – Darkade