Вступление
Заполнение строк относится к добавлению, как правило, неинформативных символов к строке на одном или обоих концах. Чаще всего это делается для форматирования и выравнивания вывода, но может иметь полезные практические применения.
Частым случаем использования строк заполнения является вывод табличной информации в табличной форме. Вы можете сделать это разными способами, включая использование Pandas для преобразования ваших данных в настоящую таблицу. Таким образом, Python будет обрабатывать форматирование вывода самостоятельно.
В этой статье мы расскажем, как дополнять строки в Python.
Скажем, у нас есть три списка:
medicine1 = ['Morning', 'dispirine', '1 mg']
medicine2 = ['Noon', 'arinic', '2 mg']
medicine3 = ['Evening', 'Long_capsule_name', '32 mg']
Мы можем сформировать их в строку, используя функцию join()
print(str.join(' ', medicine1))
print(str.join(' ', medicine2))
print(str.join(' ', medicine3))
Дало бы нам довольно неопрятный вывод:
Morning Dispirine 1 mg
Noon Arinic 2 mg
Evening Long_capsule_name 32 mg
Чтобы бороться с этим, мы могли бы писать for
/ while
и добавлять
пробелы к строкам до тех пор, пока они не достигнут определенной длины,
и следить за тем, чтобы все данные были выровнены должным образом для
облегчения визуальной проверки. Или мы могли бы использовать встроенные
функции, которые могут достичь той же цели.
В этой статье мы рассмотрим следующие ljust()
,
center()
, rjust()
, zfill()
и
format()
. Любую из этих функций можно использовать для
добавления определенного количества символов к любому концу строки,
включая пробелы.
Типы заполнения
Прежде чем мы более подробно рассмотрим функции, упомянутые выше, мы рассмотрим различные типы заполнения, чтобы мы могли ссылаться на них, когда говорим о функциях.
Левый отступ
Добавление левого отступа к строке означает добавление заданного символа в начало строки, чтобы сделать ее указанной длины. Левое заполнение, помимо простого форматирования и выравнивания, может быть действительно полезно при именовании файлов, которые начинаются с номера, сгенерированного в последовательности.
Например, вам нужно назвать 11 файлов, и каждый из них начинается с
номера от 1 до 11. Если вы просто добавите номер в начало файла,
большинство операционных систем отсортируют файлы в следующем порядке:
1
, 10
, 11
, 2
и так далее.
Это происходит, конечно, из-за правил лексикографической сортировки, но
вы можете избежать этих ситуаций, называя файлы одним или несколькими
ведущими нулями, в зависимости от того, сколько файлов вы ожидаете,
например: 01
, 02
, 03
...
Это может быть достигнуто путем эффективного заполнения чисел слева соответствующим количеством нулей, которые сохраняют их исходное значение.
Это дает эффект выравнивания строк по левому краю.
Прокладка по центру
Это означает, что данный символ добавляется в равной мере к обеим сторонам строки, пока новая строка не достигнет заданной длины. Использование этого эффективно центрирует строку по предоставленной длине:
Это обычная строка.
::: {style=“text-align:center”} Это струна с мягкой подкладкой по центру. :::
Правый отступ
Правое заполнение аналогично левому заполнению - данный символ добавляется в конец строки, пока строка не достигнет определенной длины.
Функции Python для заполнения строк
Python предлагает множество функций для форматирования и обработки строк, их использование зависит от варианта использования и личных предпочтений разработчика. Большинство функций, которые мы обсудим, имеют дело с выравниванием текста, которое, по сути, добавляет отступ к одной стороне строки. Например, чтобы строка была выровнена по левому краю , нам нужно добавить отступ в конец (с правой стороны) строки.
Примечание. Во всех функциях, которые ожидают width
или len
, в
случае, если исходная строка длиннее указанной width
или len
вся
строка будет сохранена без изменений. Это может иметь нежелательный
эффект, когда длинные строки портят форматирование, поэтому при выборе
width
убедитесь, что вы указали самую длинную строку в учетной записи
или в верхней границе длины.
похоть ()
Функция ljust()
выравнивает строку по левому краю, добавляя правый
отступ.
Функция ljust()
принимает два параметра: width
и fillchar
.
width
является обязательной и определяет длину строки после
добавления заполнения, а второй параметр является необязательным и
представляет собой добавленный символ в исходной строке.
Значение по умолчанию - пробел , то есть ' '
. Это особенно хороший
вариант для печати табличных данных, как в нашем примере в начале:
medicine1 = ['Morning', 'Dispirine', '1 mg']
medicine2 = ['Noon', 'Arinic', '2 mg']
medicine3 = ['Evening', 'Long_capsule_name', '32 mg']
for medicine in [medicine1, medicine2, medicine3]:
for entry in medicine:
print(entry.ljust(25), end='')
print()
Что дает нам результат:
Morning Dispirine 1 mg
Noon Arinic 2 mg
Evening Long_capsule_name 32 mg
центр()
Функция center()
выравнивает строку по центру указанной width
путем
равномерного добавления отступов с обеих сторон. Параметры такие же, как
у функции ljust()
, обязательная width
и необязательный параметр
fillchar
list_of_strings = ["This can give us", "text that's center aligned", "within the specified width"]
for s in list_of_strings:
print(s.center(50, ' '))
Выход:
This can give us
text that's center aligned
within the specified width
rjust ()
Аналогично двум предыдущим функциям, rjust()
выравнивает строку по
правому краю, добавляя отступ слева (в начале) строки.
Опять же, параметрами являются требуемая width
и необязательный
fillchar
. Как мы упоминали ранее, эта функция очень полезна при
именовании файлов, начинающихся с цифр, из-за более интуитивной
сортировки:
list_of_names_original = []
list_of_names_padded = []
for n in range(1, 13):
list_of_names_original.append(str(n) + "_name")
list_of_names_padded.append(str(n).rjust(2, '0') + "_name")
print("Lexicographical sorting without padding:")
print(sorted(list_of_names_original))
print()
print("Lexicographical sorting with padding:")
print(sorted(list_of_names_padded))
Запуск этого кода даст нам:
Lexicographical sorting without padding:
['10_name', '11_name', '12_name', '1_name', '2_name', '3_name', '4_name', '5_name', '6_name', '7_name', '8_name', '9_name']
Lexicographical sorting with padding:
['01_name', '02_name', '03_name', '04_name', '05_name', '06_name', '07_name', '08_name', '09_name', '10_name', '11_name', '12_name']
zfill ()
Функция zfill()
работает очень похоже на использование rjust()
с
нулем в качестве указанного символа. Он заполняет данную строку нулями
до тех пор, пока строка не достигнет заданной длины.
Единственное отличие состоит в том, что если наша строка начинается со
+
) или минус ( -
), заполнение начнется после этого знака:
neutral = '15'
positive = '+15'
negative = '-15'
length = 4
print(neutral.zfill(length))
print(positive.zfill(length+1))
print(negative.zfill(length+1))
Это сделано, чтобы сохранить исходное значение числа в случае, если строка была числом. Запуск этого кода даст нам:
0015
+0015
-0015
формат()
Функция format()
является самой продвинутой в списке. Эта единственная
функция может использоваться для левого, правого и даже центрального
отступа. Он также используется для другого
форматирования , но мы рассмотрим
только функции заполнения, которые он предоставляет.
Он возвращает строку после форматирования указанных значений и помещения
их внутри строковых заполнителей, определенных {}
.
Заполнители можно идентифицировать по именованным индексам, нумерованным индексам или даже по пустым фигурным скобкам. Быстрый пример того, как выглядят эти заполнители, прежде чем мы увидим, как мы можем использовать эту функцию для добавления отступов:
print("Placeholders can given by {0}, or with {value}".format("adding a number", value="a named value"))
print("They can also be given {}, without adding a {} or {}".format("implicitly", "number", "name"))
Что даст нам:
Placeholders can given by adding a number, or with a named value
They can also be given implicitly, without adding a number or name
Эти заполнители допускают множество вариантов форматирования. Давайте посмотрим, как можно добиться различных типов заполнения строк, используя эти параметры:
-
Отступ слева: используйте
>
внутри заполнителя и числа, чтобы указать желаемую ширину, чтобы выровнять строку по правому краю (добавляйте символы в начале):txt = "We {:>8} Python." print(txt.format('love'))
Что дает нам:
We love Python.
-
Отступ по центру: Аналогично, мы можем использовать
^
для отступа / выравнивания по центру:txt = "We {:^8} Python." print(txt.format('love')) We love Python.
-
Отступ справа: используйте
<
внутри заполнителей, чтобы выровнять строку по левому краю:txt = "We {:<8} Python." print(txt.format('love')) We love Python.
Вы также можете добавлять символы, отличные от пробелов, путем
добавления указанных символов перед символом >
, ^
или <
:
print('{:*^50}'.format('Center padding with a specific character'))
*****Center padding with a specific character*****
Вы можете узнать больше о различных возможностях функции format()
в
нашем Руководстве по форматированию строк с помощью
Python .
Заключение
Добавление отступов к строкам в Python - относительно простой процесс, который может заметно повысить удобочитаемость вашего вывода, особенно если данные, которые у вас есть, могут быть прочитаны в виде таблицы.
В этой статье мы рассмотрели функции ljust()
, rjust()
, center()
, zfill()
и format()
как встроенные подходы к заполнению строк в
Python.