2011-05-15 6 views
25

que tienen algo como esto:¿Reemplazar la primera aparición solamente de una cadena?

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

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

quisiera sustituir la primera 'muy' o sólo elegir el 'muy' se sobreescribe. Estoy haciendo esto en cantidades mucho mayores de texto, así que quiero controlar cómo se reemplazan las palabras duplicadas.

Respuesta

60
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. 
3

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

replace (viejo, nuevo [, count])
devolver una copia de la cadena con todas las apariciones de la subcadena viejo reemplazado por nuevo. Si se proporciona el recuento de argumentos opcional, solo se reemplazan las primeras instancias de recuento .

no lo probé pero creo que funciona

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

El tercer parámetro es el número máximo de ocurrencias que desea reemplazar.
De the documentation for Python:

String.Replace (s, viejo, nuevo [, maxreplace])
devolver una copia de la cadena s con todas las apariciones de la subcadena de edad reemplazados por nuevos. Si se proporciona el argumento opcional maxreplace, las primeras ocurrencias de maxreplace se reemplazan.

Cuestiones relacionadas