Подтвердить что ты не робот

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

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

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

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

'hi    '

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

4b9b3361

Ответ 1

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

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

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

Ответ 3

Новый (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              '

Ответ 4

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

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

Ответ 5

Используйте 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 где-то там: там много хорошего материала.

Ответ 6

Правильный способ сделать это - использовать синтаксис формата 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!

Ответ 7

вы также можете центр:

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

Ответ 8

Начиная с Python 3.6 вы можете просто сделать

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

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

Или, если ваш размер заполнения находится в переменной, как это (спасибо @Matt M.!):

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

Ответ 10

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

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

Ответ 11

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

Например, чтобы поместить строку с пробелами справа до 10 символов:

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

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

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

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

Ответ 12

Вы могли бы сделать это, используя понимание списка, это дало бы вам представление о количестве пробелов и было бы одним вкладышем.

"hello" + " ".join([" " for x in range(1,10)])
output --> 'hello                 '

Ответ 13

+ = может использоваться для добавления в строку

>>> string = 'hi'
>>> for s in range(0,5):
...    string += ' '
... 
>>> string
'hi          '

Ответ 14

Хорошая уловка для использования вместо различных форматов печати:

(1) Подушка с пробелами справа:

('hi' + '        ')[:8]

(2) Подушка с ведущими нулями слева:

('0000' + str(2))[-4:]