Форматирование текста в поля в оболочке Python - PullRequest
1 голос
/ 30 июля 2009

Я создал базовый класс меню, который выглядит следующим образом:

class Menu:
    def __init__(self, title, body):
        self.title = title
        self.body = body
    def display(self):
        #print the menu to the screen

Что я хочу сделать, так это отформатировать заголовок и текст, чтобы они почти поместились внутри готовых коробок. Где бы я ни проходил как корпус, дисплей сможет уместить его внутрь. Формат будет выглядеть примерно так.

********************************************************************************
*    Here's the title                                                          *
********************************************************************************
*                                                                              *
*  The body will go in here.  Say I put a line break here ---> \n              *
*  it will go to the next line.  I also want to keep track\n                   *
*  \t   <----- of tabs so I can space things out on lines if i have to         *
*                                                                              *
********************************************************************************

Название, думаю, будет легким, но я теряюсь в теле.

Ответы [ 2 ]

4 голосов
/ 30 июля 2009
#!/usr/bin/env python

def format_box(title, body, width=80):
    box_line = lambda text: "*  " + text + (" " * (width - 6 - len(text))) + "  *"

    print "*" * width
    print box_line(title)
    print "*" * width
    print box_line("")

    for line in body.split("\n"):
        print box_line(line.expandtabs())

    print box_line("")
    print "*" * width

format_box(
    "Here's the title",

    "The body will go in here.  Say I put a line break here ---> \n"
    "it will go to the next line.  I also want to keep track\n"
    "\t<----- of tabs so I can space things out on lines if i have to"
);
0 голосов
/ 31 июля 2009

Вы также можете попробовать стандартный 'textwrap' модуль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...