замена суффикса строки в python

1

Я знаю, как сделать замену строк в python, но мне нужен способ заменить только если последовательность находится в конце слова. например:

rule: at -> ate
so:
cat -> cate
but:
attorney -> attorney

спасибо.

Теги:
string

4 ответа

5
Лучший ответ

Регулярное выражение может сделать это с легкостью:

import re

regx = re.compile('at\\b')

ch = 'the fat cat was impressed by all the rats gathering at one corner of the great room'

print ch
print
print regx.sub('ATU',ch)

результат

the fat cat was impressed by all the rats gathering at one corner of the great room

the fATU cATU was impressed by all the rats gathering ATU one corner of the greATU room

.

PS

С помощью регулярных выражений мы можем выполнять очень сложные задачи.

Для Exemple, заменив несколько видов строк с определенной заменой для каждого, благодаря использованию функции обратного вызова (здесь с именем РЕПЛ, который принимает перехваченных MatchObjects)

import re

regx = re.compile('(at\\b)|([^ ]r(?! ))')

def repl(mat, dic = {1:'ATU',2:'XIXI'}):
    return dic[mat.lastindex]

ch = 'the fat cat was impressed by all the rats gathering at one corner of the great room'

print ch
print
print regx.sub(repl,ch)

результат

the fat cat was impressed by all the rats gathering at one corner of the great room

the fATU cATU was imXIXIessed by all the rats gathXIXIing ATU one cXIXIner of the XIXIeATU room
6

Нет специального метода для этого, но это довольно просто:

w = 'at'
repl = 'ate'
s = 'cat'

if s.endswith(w):
    # if s ends with w, take only the part before w and add the replacement
    s = s[:-len(w)] + repl
1

Вы можете использовать регулярные выражения с модулем re и следующим кодом:

re.sub(re.escape(suffix)+"$", replacement, word)

Если вам нужно сделать это для текста дольше, чем одно слово

re.sub(re.escape(suffix)+r"\b", replacement, word)

потому что \b является границей слова, поэтому суффикс, за которым следует граница слова, находится в конце любого слова в тексте

  • 0
    Не забудьте re.escape(suffix) .
  • 0
    @ Томас спасибо, я исправлю это в своем ответе.
Показать ещё 2 комментария
0

Существует ли определенная длина суффикса? Если нет, можете ли вы просто начать с индекса -1 строки и выполнить обратное количество символов, которое вы ищете? Затем просто выполните замену строки, как обычно.

  • 0
    Dos Regexes может выполнять такие задачи, как та, которую вы описываете, основываясь на шаблоне, который должен быть составлен в соответствии с определенными правилами и функцией модуля re. Регулярные выражения - замечательный и мощный инструмент

Ещё вопросы

Сообщество Overcoder
Наверх
Меню