Подтвердить что ты не робот

Заменить первое вхождение только строки?

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

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

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

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

4b9b3361

Ответ 1

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.

Ответ 2

text = text.replace("very", "not very", 1)

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

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

Ответ 3

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

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

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