Как я могу заполнить строку Python пробелами?
Я хочу заполнить строку пробелами. Я знаю, что для zero работает следующее:
>>> print  "'%06d'"%4
'000004'
но что мне делать, когда я этого хочу?:
'hi    '
конечно, я могу измерить длину строки и сделать str+" "*leftover, но я хотел бы кратчайший путь.
12 ответов
вы можете сделать это с помощью str.ljust(width[, fillchar]):
верните строку, оставленную оправданной в строке длины ширина. Заполнение выполняется с помощью указанного fillchar (по умолчанию-пробел). Исходная строка возвращается, если ширина меньше
len(s).
>>> 'hi'.ljust(10)
'hi        '
если не требуется поддержка Python 2.5, вы можете (и вероятно должны) использовать мини-язык форматирования строк, например:
'{0: <16}'.format('Hi')
новый(иш) строковый метод format позволяет делать некоторые забавные вещи с вложенными аргументами ключевых слов. Самый простой случай:
>>> '{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,
)
результаты:
>>> '{message:{fill}{align}{width}}'.format(
...    message='Hi',
...    fill=' ',
...    align='<',
...    width=16,
... )
'Hi              '
использовать str.ljust():
>>> 'Hi'.ljust(6)
'Hi    '
вы также должны рассмотреть string.zfill(), str.ljust() и str.center() для форматирования строки. Они могут быть прикованы цепями и иметь 'заполнить' символ указан, таким образом:
>>> ('3'.zfill(8) + 'blind'.rjust(8) + 'mice'.ljust(8, '.')).center(40)
'        00000003   blindmice....        '
эти операции форматирования строк имеют преимущество работы в Python v2 и В3.
посмотри pydoc str когда-нибудь: там есть множество хороших вещей.
правильный способ сделать это - использовать синтаксис формата Python, как описано в официальный docummentation
для этого случая это будет просто:'{: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 3.6 вы можете просто сделать
>>> strng = 'hi'
>>> f'{strng: <10}'
С символьная строка интерполяции.
или, если ваш размер заполнения находится в переменной, как это (спасибо @Matt M.!):
>>> to_pad = 10
>>> f'{strng: <{to_pad}}'
используйте Python 2.7 мини-форматирование для строки:
'{0: <8}'.format('123')
этот левый выравнивает и накладывает до 8 символов с символом''.
не будет ли более подходящие для Python, чтобы использовать нарезки?
например, чтобы заполнить строку пробелами справа, пока она не будет длиной 10 символов:
>>> x = "string"    
>>> (x + " " * 10)[:10]   
'string    '
заполнить пробелы слева до 15 символов:
>>> (" " * 15 + x)[-15:]
'         string'
это требует знать, как долго вы хотите прокладывать, конечно, но это не требует измерения длины строки, с которой вы начинаете.
+= можно использовать для добавления в строку
>>> string = 'hi'
>>> for s in range(0,5):
...    string += ' '
... 
>>> string
'hi          '
