Старый способ и новый способ

Ничто не согревает мое сердце больше, чем манипуляции со струнами - да, это сарказм. Управление строками - это не гламурно, это не приносит морального удовлетворения, но это обычное требование. Поэтому я изо всех сил стараюсь найти встроенные инструменты или создать инструменты многократного использования для решения той же задачи.

Удаление префиксов - одна из таких задач. В этом руководстве мы рассмотрим мой старый метод удаления префиксов из строки и представим новый, недавно созданный метод из версии 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')

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

Надеюсь, вам понравилась эта статья! Подпишитесь, чтобы получать уведомления, когда я публикую новые статьи, или, что еще лучше, подумайте о присоединении к среднему сообществу.