Как я могу заполнить строку Python пробелами?

Я хочу заполнить строку пробелами. Я знаю, что следующие работы для нулей:

>>> print "'%06d'"%4 '000004' 

Но что мне делать, когда я этого хочу?

 'hi ' 

конечно, я могу измерить длину строки и сделать str+" "*leftover , но мне нужен самый короткий путь.

11 Solutions collect form web for “Как я могу заполнить строку Python пробелами?”

Вы можете сделать это с помощью str.ljust(width[, fillchar]) :

Верните строку, оставшуюся в строке длины шириной . Заполнение выполняется с использованием указанного fillchar (по умолчанию это пробел). Исходная строка возвращается, если ширина меньше len(s) .

 >>> 'hi'.ljust(10) 'hi ' 

Если вам не нужна поддержка Python 2.5, вы можете (и, вероятно, должны) использовать мини-язык для форматирования строк , например:

 '{0: <16}'.format('Hi') 

Вы можете попробовать следующее:

 print "'%-100s'" % 'hi' 

Новый метод форматирования (ish) позволяет вам делать некоторые забавные вещи с вложенными аргументами ключевого слова. Простейший случай:

 >>> '{message: <16}'.format(message='Hi') 'Hi ' 

Если вы хотите передать 16 в качестве переменной:

 >>> '{message: <{width}}'.format(message='Hi', width=16) 'Hi ' 

Если вы хотите передать переменные для всего набора и kaboodle :

 >>> '{message:{fill}{align}{width}}'.format(message='Hi', fill=' ', align='<', width=16) 'Hi ' 

Используйте str.ljust() :

 >>> 'Hi'.ljust(6) 'Hi ' 

Вы также должны рассмотреть string.zfill() , str.ljust() и str.center() для форматирования строк. Они могут быть привязаны и иметь заданный символ « fill », таким образом:

 >>> ('3'.zfill(8) + 'blind'.rjust(8) + 'mice'.ljust(8, '.')).center(40) ' 00000003 blindmice.... ' 

Преимущество этих операций форматирования строк заключается в работе в Python v2 и v3.

Взгляните на pydoc str когда-нибудь: там есть множество хороших вещей.

вы также можете центрировать строку:

 '{0: ^20}'.format('nice') 

Правильным способом сделать это будет использование синтаксиса формата Python, как описано в официальной документации

Для этого случая это было бы просто:
'{:10}'.format('hi')
который выводит:
'hi '

Объяснение:

 format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type] fill ::= <any character> align ::= "<" | ">" | "=" | "^" sign ::= "+" | "-" | " " width ::= integer precision ::= integer type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%" 

Практически все, что вам нужно знать, есть.

Обновление: начиная с python 3.6, это еще более удобно с интерполяцией буквальной строки!

 foo = 'foobar' print(f'{foo:10} is great!') # foobar is great! 

Используйте мини-форматирование Python 2.7 для строк :

 '{0: <8}'.format('123') 

Это левое выравнивание, и накладывается на 8 символов с символом ''.

Просто удалите 0, и вместо этого будет добавлено место:

 >>> print "'%6d'"%4 

Разве не было бы более питоническим использовать нарезку?

Например, для прокладки строки с пробелами справа до 10 символов:

 >>> x = "string" >>> (x + " " * 10)[:10] 'string ' 

Чтобы проложить его пробелами слева до 15 символов:

 >>> (" " * 15 + x)[-15:] ' string' 

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

Похоже, что в Python 3.6 вы можете просто сделать

 >>> strng = 'hi' >>> f'{strng: <10}' 

с интерполяцией буквальной строки .

  • python подсчет букв в строке без функции count
  • Python: Неявное преобразование объекта в str?
  • f.read, приходящий пустой
  • Как получить имя функции в виде строки в Python?
  • Как суммировать значения отдельных строк в пандах?
  • Ввод биографических данных в порядок из 4-х параметров с использованием python 3.3
  • Вызов функции из строки внутри одного модуля в Python?
  • Изменить символ новой строки .readline () ищет
  • Python - лучший язык программирования в мире.