Заменить первое вхождение только строки? - PullRequest
50 голосов
/ 15 мая 2011

У меня есть что-то вроде этого:

text = 'This text is very very long.'
replace_words = ['very','word']

for word in replace_words:
    text = text.replace('very','not very')

Я бы хотел заменить только первое «очень» или выбрать, которое «очень» перезаписывается.Я делаю это на гораздо больших объемах текста, поэтому я хочу контролировать замену повторяющихся слов.

Ответы [ 3 ]

86 голосов
/ 15 мая 2011
text = text.replace("very", "not very", 1)

>>> help(str.replace)
Help on method_descriptor:

replace(...)
    S.replace (old, new[, count]) -> string

    Return a copy of string S with all occurrences of substring
    old replaced by new.  If the optional argument count is
    given, only the first count occurrences are replaced.
27 голосов
/ 19 февраля 2015
text = text.replace("very", "not very", 1)

Третий параметр - это максимальное количество вхождений, которое вы хотите заменить.
С документация для Python :

string.replace (s, old, new [, maxreplace])
Вернуть копию строки s, в которой все вхождения подстроки old заменены на new. Если указан необязательный аргумент maxreplace, заменяются первые вхождения maxreplace.

3 голосов
/ 15 мая 2011

С http://docs.python.org/release/2.5.2/lib/string-methods.html:

replace (old, new [, count])
Возвращать копию строки со всеми вхождениями подстрокистарые заменены на новые.Если указан необязательный аргумент count, заменяются только первые вхождения count.

Я не пробовал, но считаю, что это работает

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