Как я могу заполнить строку Python пробелами?
Я хочу заполнить строку пробелами. Я знаю, что следующие работы для нулей:
>>> print "'%06d'"%4
'000004'
Но что мне делать, когда я хочу это?:
'hi '
конечно, я могу измерить длину строки и сделать str+" "*leftover
, но мне нужен самый короткий путь.
Ответы
Ответ 1
Вы можете сделать это с помощью str.ljust(width[, fillchar])
:
Вернуть строку, которая будет выровнена в строке длины. Заполнение выполняется с использованием указанного fillchar (по умолчанию это пробел). Исходная строка возвращается, если ширина меньше len(s)
.
>>> 'hi'.ljust(10)
'hi '
Ответ 2
Если вам не требуется поддержка Python 2.5, вы можете (и, вероятно, должны) использовать мини-язык с форматированием строк, например:
'{0: <16}'.format('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}}'
Ответ 9
Используйте Python 2.7 мини-форматирование для строк:
'{0: <8}'.format('123')
Этот левый выравнивает и накладывает на 8 символов с символом '.
Ответ 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:]