7

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

1

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

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

Но что делать, если я хочу получить вот такую строку:

'hi    '

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

5 ответ(ов)

0

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

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

Этот код выведет строку 'hi', выровненную по левому краю с общей шириной в 100 символов.

0

Вы также можете центрировать вашу строку следующим образом:

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

В этом примере строка 'nice' будет выровнена по центру в поле шириной 20 символов. Символы перед и после строки будут заполнены пробелами.

0

Вместо того чтобы использовать 0, просто уберите его, и программа добавит пробел вместо нуля:

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

В этом примере '%6d' значит, что вывод будет занимать 6 символов в ширину, а если значение меньше этой ширины, то вместо нуля будут добавлены пробелы.

0

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

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

x = "string"
result = (x + " " * 10)[:10]
print(result)  # 'string    '

А для дополнения пробелами слева до 15 символов:

result = (" " * 15 + x)[-15:]
print(result)  # '         string'

Действительно, такой подход не требует предварительного вычисления длины исходной строки, что делает код более лаконичным и читаемым. Однако нужно учитывать, что вы должны заранее знать, до какой длины необходимо дополнить строку. Если эта информация известна, использование срезов позволяет избежать дополнительных операций измерения длины строки.

0

Хотя это не упомянуто в других ответах, я хотел бы отметить, что вы можете использовать методы 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.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь