Основной вопрос c заключается в следующем: я знаю, как выравнивать по правому краю, т.е. применять отступ из 10 пробелов:
'some string %10s' % 'place me 10 spaces after previous character'
, но как печатать текст в абсолютной горизонтальной позиции на линии?
Я форматирую страницы справки, то есть серию пар строк, используя Спецификация формата Mini-Language . Как вы можете видеть ниже, я использую шаблон и .format для написания строк, состоящих из команды и строки справки. Первая строка вывода в порядке, но затем я разделил команду на несколько строк, и по этой причине строка справки не отображается в горизонтальной позиции 100 (как указано в шаблоне):
template = "{0:30} {1:100}\n"
command_help = [
('myscript --help',
'Show the help'),
('myscript do_this --option1=10 \n --option2=3 ...',
'Script does something. NB bad padding'),
('myscript do_this --option1=10 \n --option2=3 ...',
'%28s' % 'Manually adding padding does not work'),
('myscript do_first \nmyscript do_second \nmyscript do_third',
'Common command sequence to do something. NB bad padding')
]
for command, help in command_help:
print(template.format(command, help))
Результат:
myscript --help Show the help
myscript do_this --option1=10
--option2=3 ... Script does something. NB bad padding
myscript do_this --option1=10
--option2=3 ... Manually adding padding does not work
myscript do_first
myscript do_second
myscript do_third Common command sequence to do something. NB bad padding