Как удалить префиксы из строк?

#python

#python

Вопрос:

Я пытаюсь выполнить некоторую предварительную обработку текста, чтобы я мог выполнить некоторые действия по сопоставлению строк.

У меня есть набор строк, я хочу проверить, начинается ли первое слово в строке с префикса «1 /». Если это произойдет, я хочу удалить этот префикс, но сохранить остальную часть слова / строки.

Я придумал следующее, но он просто удаляет все после первого слова и не обязательно удаляет префикс «1 /»

 prefixes = (r'1/')
#remove prefixes from string
def prefix_removal(text):
    for word in str(text).split():
        if word.startswith(prefixes):
            return word[len(prefixes):]
        else:
            return word
  

Любая помощь будет оценена!

Спасибо!

Комментарии:

1. Попробуйте s.split(prefix)[-1] , это должно работать, даже если префикс не существует, но если префикс появлялся несколько раз в вашей строке, чтобы он принимал строку после последнего появления

Ответ №1:

Предполагая, что вы хотите удалить префикс только из первого слова, а остальное оставить в покое, я не вижу причин использовать цикл for . Вместо этого я бы рекомендовал это:

 def prefix_removal(text):
    first_word = text.split()[0]
    if first_word.startswith(prefixes):
         return text[len(prefixes):]
    return text
  

Надеюсь, это ответ на ваш вопрос, удачи!

Ответ №2:

Начиная с Python 3.9, вы можете использовать str.removeprefix :

 word = word.removeprefix(prefix)
  

Для других версий Python вы можете использовать:

 if word.startswith(prefix):
    word = word[len(prefix):]
  

Комментарии:

1. в настоящее время невозможно использовать python 3.9

2. @mikelowry Для других версий Python вы можете использовать эквивалентную версию, указанную в документации. Я обновил свой ответ.