Старый способ и новый способ
Ничто не согревает мое сердце больше, чем манипуляции со струнами - да, это сарказм. Управление строками - это не гламурно, это не приносит морального удовлетворения, но это обычное требование. Поэтому я изо всех сил стараюсь найти встроенные инструменты или создать инструменты многократного использования для решения той же задачи.
Удаление префиксов - одна из таких задач. В этом руководстве мы рассмотрим мой старый метод удаления префиксов из строки и представим новый, недавно созданный метод из версии 3.9, который стал моей де-факто стратегией.
Использование .startswith () с .replace ()
Это общий шаблон проектирования, применимый на разных языках. По сути, мы сначала проверяем, начинается ли строка с нашего префикса. Если это так, мы заменяем этот префикс пустой строкой.
my_string = 'ABC-1234' if my_string.startswith('ABC'): my_string.replace('ABC','')
Мы можем обобщить это в простую функцию с двумя аргументами.
def strip_prefix(s, p): return s.replace(p,'') if s.startswith(p) else s
Примечание: на самом деле метод replace () может (и должен) быть заменен нотацией среза, поскольку он более производительный.
def strip_prefix(s, p): if s.startswith(p): return s[len(p):] else: return s
Эту функцию довольно легко читать ... название имеет смысл, тело короткое и простое, но постоянно изобретать велосипед - это проблема. Если бы только был встроенный инструмент для использования… 🤔
Использование .removeprefix ()
К счастью для нас, начиная с версии 3.9, Python выпустил строковый метод removeprefix (), который выполняет именно то, что делает вышеупомянутая стратегия. Фактически, если взглянуть на спецификацию, это почти точная копия нашей функции с обозначением фрагментов.
Итак, как нам использовать этот метод? Это действительно так просто.
school_id = 'G00012345' school_id = school_id.removeprefix('G')
Основная победа здесь - улучшение качества жизни, поскольку вам больше не придется копировать / вставлять старый способ в новый проект. Вдобавок - и это мнение - благодаря строковому методу синтаксис становится более чистым, поскольку передается только один аргумент.
Надеюсь, вам понравилась эта статья! Подпишитесь, чтобы получать уведомления, когда я публикую новые статьи, или, что еще лучше, подумайте о присоединении к среднему сообществу.