Python zfill и rjust: Добавление нулей в строку в Python
В этом учебнике вы узнаете, как использовать метод zfill
в Python для дополнения строки ведущими нулями. Вы узнаете, как работает этот метод и как дополнить нулями строку и число. Вы также узнаете, как использовать этот метод в Pandas, а также как использовать префиксы знаков, такие как +
или -
, в вашем дополнении. Наконец, вы узнаете некоторые альтернативы методу zfill
в Python, которые предоставляют различную гибкость. Эти альтернативы включают функцию rjust
и использование форматирования строк для дополнения и выравнивания вашего текста.
Содержание
Python zfill
: Обзор
zfill
: ОбзорМетод zfill
в Python – это метод строки, который возвращает копию строки, дополненной слева символом '0'
до достижения заданной ширины.
Метод принимает один параметр, width
. Этот параметр используется для задания ширины желаемой строки. Давайте рассмотрим метод:
str.zfill(
width=
)
Параметр width
обязателен. Метод вызовет ошибку TypeError, если ширина не передана. Аналогично, метод вызовет ошибку TypeError, если передано значение с плавающей точкой, а не целое число. Позже в этом учебнике вы узнаете, что происходит, когда передаются определенные типы ширин.
В следующем разделе вы узнаете краткий обзор того, почему вам может понадобиться дополнить строку нулями в Python.
Почему дополнять строку нулями в Python
Существует множество причин, по которым вам может понадобиться дополнить строку нулями в Python. Например, во многих устаревших финансовых приложениях системы данных ожидают ввод определенной длины. Чтобы вставить данные в эти системы, вам может понадобиться дополнить данные нулями.
Аналогично, при импорте данных в Python ключ может быть интерпретирован как число, что приводит к удалению ведущих нулей. Это создает проблемы при последующем объединении наборов данных. Дополнение нулями строки, похожей на число, позволяет безопасно переформатировать данные для объединения по фреймам данных.
Как использовать Python zfill
для дополнения строки нулями
zfill
для дополнения строки нулямиМетод zfill
в Python используется для создания копии строки с нулями, дополняющими строку до определенной ширины. Давайте попробуем пример:
# Использование Python zfill для дополнения строки
a_string = 'bemind'
print(a_string.zfill(10))
# Возвращает: 0000bemind
Мы видим, что метод вернул строку с нулями, дополняющими левую сторону.
Помните, строки в Python неизменяемы, что означает, что их нельзя изменить. Мы можем проверить это, применив метод, а затем распечатав исходную строку:
# Использование Python zfill для дополнения строки
a_string = 'bemind'
a_string.zfill(10)
print(a_string)
# Возвращает: bemind
Если мы хотим "обновить" нашу строку (помните, это фактически не обновит строку, а создаст новую), нам нужно переназначить ее. Давайте посмотрим, как это выглядит:
# Использование Python zfill для дополнения строки
a_string = 'bemind'
a_string = a_string.zfill(10)
print(a_string)
# Возвращает: 0000bemind
Как мы изменяем нашу строку?
Мы видим, что успешно переназначили строку самой себе с примененным методом .zfill()
.
Хотите узнать, какой тип данных возвращает метод .zfill()
? Мы можем легко сделать это с помощью функции type
. Давайте посмотрим, что это возвращает:
# Проверка возвращаемого типа метода .zfill()
a_string = 'bemind'
print(type(a_string.zfill(10)))
# Возвращает: <class 'str'>
Неудивительно, что метод zfill
возвращает тип данных строки.
Что происходит, если ширина короче исходной строки?
Давайте посмотрим, что происходит, когда передаваемая ширина короче исходной строки:
# Дополнение строки нулями с меньшей длиной
a_string = 'bemind'
print(a_string.zfill(4))
# Возвращает: bemind
Если ширина либо короче, либо такой же длины, как исходная строка, метод просто возвращает копию исходной строки.
Как использовать Python zfill
с числами
zfill
с числамиПоскольку метод zfill
является методом строки, его можно использовать только со строками. Могут быть случаи, когда вы хотите дополнить число ведущими нулями. Давайте посмотрим, что происходит, когда мы пытаемся применить метод zfill
к целому числу:
# Попытка дополнить целое число нулями
number = 13
number.zfill(5)
# Возвращает: AttributeError: 'int' object has no attribute 'zfill'
Мы видим, что при попытке применить метод к целому числу возникает ошибка AttributeError.
Чтобы предотвратить эту ошибку, нам нужно сначала преобразовать целое число в строку. Мы можем сделать это с помощью функции str()
. Давайте посмотрим, как это выглядит:
# Дополнение целого числа нулями в Python
number = 13
print(str(number).zfill(7))
# Возвращает: 0000013
Важно отметить, что это больше не целое число! Это фактически результат в строке. Это означает, что мы не можем выполнять операции, которые обычно ассоциируются с числами, такие как сложение.
В следующем разделе вы узнаете, как использовать метод zfill
в фрейме данных Pandas для дополнения нулями всего столбца.
Как дополнить столбец нулями в Pandas с помощью zfill
zfill
Могут быть случаи, когда вы хотите, чтобы значения в ваших фреймах данных Pandas были дополнены нулями слева. Pandas фактически реализует метод zfill
непосредственно в фрейме данных Pandas, что означает, что мы можем применить функцию в векторизованном формате.
Чтобы увидеть, как это работает, давайте сначала импортируем пример фрейма данных Pandas:
# Импорт примера фрейма данных Pandas
import pandas as pd
df = pd.DataFrame.from_dict({
'ID': [1, 2, 3, 4, 5, 6, 7, 8, 9],
'Sales': [100, 120, 110, 120, 145, 95, 80, 75, 135]
})
print(df.head())
# Возвращает:
# ID Sales
# 0 1 100
# 1 2 120
# 2 3 110
# 3 4 120
# 4 5 145
Предположим, мы хотим дополнить значения столбца ID. Мы можем просто применить метод str.zfill()
к нашему столбцу данных. Поскольку эти значения неизменяемы, нам нужно быть внимательными, чтобы переназначить значения самим себе.
# Дополнение нулями столбца фрейма данных Pandas
df['ID'] = df['ID'].astype('str').str.zfill(5)
print(df.head())
# Возвращает:
# ID Sales
# 0 00001 100
# 1 00002 120
# 2 00003 110
# 3 00004 120
# 4 00005 145
Мы видим, как легко дополнить столбец нулями. Поскольку значения в нашем столбце не являются строками, сначала нужно преобразовать их в строки с помощью метода .astype()
. Если наш столбец уже состоял из строк, мы могли бы пропустить этот шаг.
Как дополнить нулями с префиксами знаков в Python
Метод zfill
в Python действительно хорошо работает, когда мы хотим назначить префиксы знаков, такие как +
или -
, к строке, дополненной нулями. Нам просто нужно включить префикс знака, который мы хотим, и Python позаботится об остальном.
Давайте посмотрим, как это выглядит:
# Дополнение нулями в Python с префиксами знаков
a_number = '+13'
print(a_number.zfill(5))
# Возвращает: +0013
Мы видим, что Python умно переместил префикс знака в начало строки! Это позволяет нам легко убедиться, что префиксы знаков учтены.
Важно отметить, что префикс знака включен в ширину строки. Поскольку мы передали ширину 5, мы могли ожидать, что возвращенная копия будет включать три нуля. Однако, поскольку полная ширина составляет 5, включая знак, было добавлено только два дополнительных нуля.
В следующих двух разделах вы узнаете две альтернативы методу zfill
!
Дополнение строки справа с помощью Python rjust
Могут быть случаи, когда вы хотите дополнить строку, но не хотите, чтобы она была заполнена нулями. В этих случаях может быть полезно использовать метод строки rjust
.
Метод rjust
применяется к строке и принимает два параметра: (1) ширину результирующей строки и (2) символ, используемый для дополнения исходной строки.
Давайте использовать пробел для дополнения нашей строки с помощью метода rjust
:
# Использование .rjust для дополнения строки в Python
a_string = 'bemind'
print(a_string.rjust(10, ' '))
# Возвращает:
# bemind
Преимущество этого подхода заключается в том, что мы можем использовать любой символ для дополнения наших строк.
В заключительном разделе вы узнаете, как использовать форматирование строк для дополнения строки.
Дополнение строки справа с помощью форматирования строк в Python
В этом заключительном разделе вы узнаете, как использовать форматирование строк в Python для дополнения строки слева.
Python делает это довольно просто. Давайте посмотрим, как мы можем использовать традиционное форматирование строк для дополнения строки:
# Дополнение строки с помощью форматирования строк
a_string = 'bemind'
print('{:0>10}'.format(a_string))
# Возвращает: 0000bemind
Мы используем :0
, чтобы попросить Python использовать 0
для дополнения нашей строки, и >10
, чтобы указать дополнение слева для ширины десять.
Аналогично, мы можем использовать Python f-strings для дополнения строки:
# Дополнение строки с помощью f-strings
a_string = 'bemind'
print(f'{a_string:0>10}')
# Возвращает: 0000bemind
Этот подход немного более читабелен, так как он сразу показывает, какую строку вы хотите дополнить.
Заключение
В этом учебнике вы узнали, как использовать метод zfill
в Python для дополнения строки нулями слева. Вы также узнали, как дополнить нулями числа и как дополнить столбец нулями в фрейме данных Pandas. Наконец, вы узнали некоторые альтернативы методу zfill
. Эти альтернативы включают метод rjust
и форматирование строк в Python.
Чтобы узнать больше о методе str.zfill()
в Python, ознакомьтесь с официальной документацией здесь.
Дополнительные ресурсы
Чтобы узнать о связанных темах, ознакомьтесь с учебниками ниже:
Python: Remove Special Characters from a String
Python: Check If a String is a Palindrome (5 Easy Ways!)
Python: Reverse a String (6 Easy Ways)
Last updated