#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 вы можете использовать эквивалентную версию, указанную в документации. Я обновил свой ответ.