78 votes

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 uniquement remplacer le premier « très » ou choisir lequel « très » est é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.

123voto

Fred Nurk Points 8927
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.

5voto

sergiol Points 482

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

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X