Я хочу заполнить строку пробелами. Я знаю, что для нулей работает следующее:
>>> print "'%06d'"%4
'000004'
Но что мне делать, когда я этого хочу?
'hi '
Конечно, я могу измерить длину строки и сделать str+" "*leftover
, но я бы хотел кратчайший путь.
python
string
string-formatting
pad
конусность
источник
источник
"%-6s" % s
для выравнивания по левому краю и"%6s" % s
для выравнивания по правому краю.Ответы:
Вы можете сделать это с
str.ljust(width[, fillchar])
:источник
Для гибкого метода, который работает даже при форматировании сложной строки, вам, вероятно, следует использовать мини-язык форматирования строки , используя любой из
str.format()
методовиз струнных
источник
'{message: <{fill}}'.format(message='Hi', fill='16')
str.format()
для шаблонов только один{...}
и ничего больше. Просто используйтеformat()
функцию и сохранить себя разбор накладных расходов:format('Hi', '<16')
.Новый (ish) метод строкового формата позволяет вам делать забавные вещи с вложенными ключевыми аргументами. Самый простой случай:
Если вы хотите передать в
16
качестве переменной:Если вы хотите передать переменные для всего набора и kaboodle :
К чему приводит (как вы уже догадались):
источник
Вы можете попробовать это:
источник
"'%+100s'" % 'hi'
будет работать для размещения пробелов справа от'hi'
Правильный способ сделать это будет использовать синтаксис формата Python, как описано в официальной документации
Для этого случая это будет просто:
'{:10}'.format('hi')
какие выводы:
'hi '
Объяснение:
Практически все, что вам нужно знать, это ^.
Обновление: с Python 3.6 это еще более удобно с интерполяцией литеральных строк!
источник
Используйте
str.ljust()
:Следует также учитывать
string.zfill()
,str.ljust()
иstr.center()
для строки форматирования. Они могут быть объединены в цепочку и иметь заданный символ заполнения , таким образом:Эти операции форматирования строк имеют преимущество работы в Python v2 и v3.
Взгляните на какое-
pydoc str
то время: там много хороших вещей.источник
Начиная с Python 3.6 вы можете просто сделать
с интерполяцией буквенных строк .
Или, если ваш размер заполнения находится в переменной, как это (спасибо @Matt M.!):
источник
f'{strng: >10}'
для заполнения строки начальными пробелами до длины 10. Это волшебство. И это не очень хорошо задокументировано.f'{strng:10}'
.Вы можете также центрировать вашу строку:
источник
Используйте мини-форматирование Python 2.7 для строк :
Выравнивание по левому краю и добавление 8 символов к символу ''.
источник
Просто удалите 0, и вместо этого будет добавлено пространство:
источник
Разве не было бы более питоническим использовать нарезку?
Например, чтобы заполнить строку пробелами справа до 10 символов:
Чтобы дополнить его пробелами слева до 15 символов:
Конечно, это требует знания того, как долго вы хотите заполнить, но не требует измерения длины строки, с которой вы начинаете.
источник
''.join(reversed(str))
более питоническиstr[::-1]
, и мы все знаем, что это не так.(x + " " * 10)[:10]
на мой взгляд, гораздо более запутанный, чем использованиеx.ljust(10)
.Хорошая уловка для использования вместо различных форматов печати:
(1) Подушка с пробелами справа:
(2) Подушка с ведущими нулями слева:
источник
min_len = 8
тогда('hi' + ' '*min_len)[:min_len]
или('0'*min_len + str(2))[-min_len]
('0'*min_len + str(2))[-min_len:]
скорее, хотя это только для забавы, и я рекомендую другие ответы.Вы могли бы сделать это, используя понимание списка, это дало бы вам представление о количестве пробелов и было бы одним вкладышем.
источник
s = "hi"
;s + (6-len(s)) * " "
вместо этого (это нормально, когда результат отрицательный). Тем не менее, ответы, которые используют любую базовую функцию, которая решает конкретную проблему, будет легче поддерживать (см. другие ответы).