Как я могу заполнить строку 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 '