#python #python-3.x #formatting
#python #python-3.x #форматирование
Вопрос:
Я хочу иметь строку, в которой я могу отформатировать ее целым числом, чтобы она:
- Добавляет знак перед целым числом ( для положительных целых чисел, — для отрицательных целых чисел)
- Заключите подписанный int в круглые скобки (т.Е. с помощью ())
- Выровняйте int по левому краю с помощью круглых скобок слева, добавив при необходимости пробелы в конце.
Я знаю, как выполнить эти шаги по отдельности, но я не смог объединить их в одну строку.
Например, 1 и 2 были бы выполнены с помощью '({: d})'.format(3)
, это привело бы к ( 3)
.
3 выполняется для произвольной строки с помощью '{:<5}'.format(3)
, это привело бы к 3
(4 завершающих пробела).
Моя цель — иметь единственную строку, к которой я могу обратиться .format
только один раз, поэтому
format_string.format(3)
приведет к
( 3)
с одним конечным пробелом, чтобы длина строки составляла 5.
Возможно ли это?
Я пробовал ({{: d}:<5})
, но это не работает, поскольку он считает, что {: d}
это имя поля для форматирования с <5
, что, очевидно, не так.
Я также изучал f-строки, но они не подходят для моего варианта использования, поскольку я вызываю .format
строку форматирования позже, чем при ее создании.
Любая помощь была бы очень кстати!
Ответ №1:
Решение с одним вызовом для format
:
def special_format_int(n, SPACES=5):
return '({: d})'.format(n).ljust(SPACES)
Комментарии:
1. Спасибо, но я надеялся, что есть способ вызывать только format. Можете ли вы придумать способ тогда?