web-dev-qa-db-fra.com

Remplacer la première occurrence uniquement d'une chaîne?

J'ai quelque chose comme ça:

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

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

Je voudrais seulement remplacer le premier "très" ou choisir le "très" qui sera écrasé. Je fais cela sur des quantités de texte beaucoup plus importantes, donc je veux contrôler la façon dont les mots en double sont remplacés.

53
jblu09
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.
88
Fred Nurk
text = text.replace("very", "not very", 1)

Le troisième paramètre est le nombre maximal d'occurrences que vous souhaitez remplacer.
De la documentation pour Python :

string.replace (s, ancien, nouveau [ maxreplace])
Renvoie une copie de la chaîne s avec toutes les occurrences de la sous-chaîne old remplacée par new. Si l'argument facultatif maxreplace est donné, les premières occurrences maxreplace sont remplacées.

29
Hassan Raza

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

remplacer (ancien, nouveau [ nombre])
Retourne une copie de la chaîne avec toutes les occurrences de la sous-chaîne old remplacée par new. Si le nombre d'arguments facultatif est donné, seules les premières occurrences de comptage sont remplacées.

Je n'ai pas essayé mais je crois que ça marche

3
sergiol