замена суффикса строки в python - PullRequest
2 голосов
/ 15 июня 2011

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

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

спасибо.

Ответы [ 4 ]

6 голосов
/ 15 июня 2011

Специального метода для этого не существует, но в любом случае он довольно прост:

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
5 голосов
/ 15 июня 2011

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

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

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

Например, замена нескольких типов строк определенной заменой для каждой, благодаря использованию функции обратного вызова (здесь она называется repl , которая получает перехваченные объекты 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
1 голос
/ 15 июня 2011

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

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

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

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

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

0 голосов
/ 15 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...