Как заполнить строку в Python пробелами?
Я хочу заполнить строку пробелами. Я знаю, что следующий код работает для нулей:
>>> print("'%06d'" % 4)
'000004'
Но что делать, если я хочу получить вот такую строку:
'hi '
Конечно, я могу измерить длину строки и сделать str + " " * leftover
, но я хотел бы узнать самый короткий способ решения этой задачи.
5 ответ(ов)
Вы можете попробовать следующий код:
print("'%-100s'" % 'hi')
Этот код выведет строку 'hi', выровненную по левому краю с общей шириной в 100 символов.
Вы также можете центрировать вашу строку следующим образом:
'{0: ^20}'.format('nice')
В этом примере строка 'nice'
будет выровнена по центру в поле шириной 20 символов. Символы перед и после строки будут заполнены пробелами.
Вместо того чтобы использовать 0
, просто уберите его, и программа добавит пробел вместо нуля:
>>> print("'%6d'" % 4)
В этом примере '%6d'
значит, что вывод будет занимать 6 символов в ширину, а если значение меньше этой ширины, то вместо нуля будут добавлены пробелы.
Да, использование срезов действительно может быть более питоничным способом в данном случае. Ваш пример хорошо демонстрирует, как можно эффективно добавлять пробелы к строке, используя срезы.
Для дополнения строки пробелами справа, чтобы она имела длину 10 символов, можно сделать так:
x = "string"
result = (x + " " * 10)[:10]
print(result) # 'string '
А для дополнения пробелами слева до 15 символов:
result = (" " * 15 + x)[-15:]
print(result) # ' string'
Действительно, такой подход не требует предварительного вычисления длины исходной строки, что делает код более лаконичным и читаемым. Однако нужно учитывать, что вы должны заранее знать, до какой длины необходимо дополнить строку. Если эта информация известна, использование срезов позволяет избежать дополнительных операций измерения длины строки.
Хотя это не упомянуто в других ответах, я хотел бы отметить, что вы можете использовать методы strings
для выравнивания текста.
У вас есть по меньшей мере три варианта:
- Выравнивание по левому краю:
>>> "left justified".ljust(30, "*")
left justified****************
- Выравнивание по правому краю:
>>> "right justified".rjust(30, "*")
***************right justified
- Центрированное выравнивание:
>>> "center justified".center(30, "*")
*******center justified*******
Я использую Python 3.10.13, но, как мне кажется, это должно работать в большинстве версий 3.X.
Как экранировать фигурные скобки ({}) в строке при использовании .format?
Есть ли в Python метод подстроки 'contains' для строк?
Объединение двух столбцов текста в DataFrame pandas
Как получить имя функции в виде строки?
Вывод строки в текстовый файл