Cómo usar string.replace () en python 3.x

280

El string.replace () está en desuso en python 3.x. ¿Cuál es la nueva forma de hacer esto?

Dewsworld
fuente
11
FWIW, tuve la misma confusión. Google "Python string replace" me llevó a las viejas funciones de cadena obsoletas en python 2.7. En mi humilde opinión, esa sección podría usar un gran cuadro en negrita que explica "string.xxx ()" vs "xxx (string)" y dirige a las personas a los métodos de cadena no obsoletos, por ejemplo, a docs.python.org/library/stdtypes.html # string-
method
8
La documentación de Python es un desastre absoluto teniendo en cuenta que se promociona como el primer idioma ideal. Muy a menudo, las cosas están allí, pero debido a la mala forma en que se organiza, a menudo los motores de búsqueda o incluso su propio sitio no lo indexan bien. Mire el enlace de ToolMakerSteve, las funciones principales de la cadena se agrupan en tipos estándar. Esto no aparece cuando busca funciones de cadena.
Andrew S
10
Para ser claros: string.replace () en realidad no está en desuso en Python 3.
sboggs11
2
Está en los tipos incorporados para 3.x docs.python.org/3.7/library/stdtypes.html#str.replace
JerodG
1
A veces las personas escriben "str.replace" cuando quieren decir [su variable de cadena] .replace. Debido a que 'str' también es el nombre de la clase relevante, esto puede ser confuso.
TextGeek

Respuestas:

315

Como en 2.x, use str.replace().

Ejemplo:

>>> 'Hello world'.replace('world', 'Guido')
'Hello Guido'
Ignacio Vazquez-Abrams
fuente
44
El módulo "re" (expresión regular) tiene alternativas para (algunas? Todas?) Funciones de cadena en desuso. En este caso re.sub(),.
ToolmakerSteve
8
@ToolmakerSteve: las stringfunciones están en desuso. strLos métodos no lo son.
Ignacio Vazquez-Abrams
66
FWIW, cada vez que busco en Google, parece que termino en las viejas funciones de cadena obsoletas. Aquí está el enlace a los métodos de cadena (no obsoletos). docs.python.org/3.3/library/stdtypes.html#string-methods ~ or_for_2 ~ docs.python.org/2/library/stdtypes.html#string-methods
ToolmakerSteve
36
Si tengo que venir al desbordamiento de la pila para navegar por la documentación de Python, claramente hay un problema. Equipo de Python si estás leyendo. ¡SOLUCIONAR EL PROBLEMA!
Andrew S
2
Llame al método en el objeto, no a la clase. 'foo'.replace(...)
Ignacio Vázquez-Abrams
108

replace()es un método de <class 'str'>en python3:

>>> 'hello, world'.replace(',', ':')
'hello: world'
kev
fuente
13

El método replace () en python 3 se usa simplemente por:

a = "This is the island of istanbul"
print (a.replace("is" , "was" , 3))

#3 is the maximum replacement that can be done in the string#

>>> Thwas was the wasland of istanbul

# Last substring 'is' in istanbul is not replaced by was because maximum of 3 has already been reached

fuente
2
Recuerda que tampoco puedes poner 3 y cambiaría todas las coincidencias.
Ender Look
4

Puede usar str.replace () como una cadena de str.replace () . Piensa que tiene una cadena como 'Testing PRI/Sec (#434242332;PP:432:133423846,335)'y desea reemplazar todo el '#',':',';','/'signo con '-'. Puede reemplazarlo de esta manera (forma normal),

>>> str = 'Testing PRI/Sec (#434242332;PP:432:133423846,335)'
>>> str = str.replace('#', '-')
>>> str = str.replace(':', '-')
>>> str = str.replace(';', '-')
>>> str = str.replace('/', '-')
>>> str
'Testing PRI-Sec (-434242332-PP-432-133423846,335)'

o de esta manera (cadena de str.replace () )

>>> str = 'Testing PRI/Sec (#434242332;PP:432:133423846,335)'.replace('#', '-').replace(':', '-').replace(';', '-').replace('/', '-')
>>> str
'Testing PRI-Sec (-434242332-PP-432-133423846,335)'
Kushan Gunasekera
fuente
3

Prueba esto:

mystring = "This Is A String"
print(mystring.replace("String","Text"))
Ed Dabbah
fuente
1

Para su información, al agregar algunos caracteres a una palabra arbitraria, fija en la posición dentro de la cadena (por ejemplo, cambiar un adjetivo a un adverbio agregando el sufijo -ly ), puede colocar el sufijo al final de la línea para facilitar la lectura. Para hacer esto, use split()adentro replace():

s="The dog is large small"
ss=s.replace(s.split()[3],s.split()[3]+'ly')
ss
'The dog is largely small'
Ooker
fuente
0
ss = s.replace(s.split()[1], +s.split()[1] + 'gy')
# should have no plus after the comma --i.e.,
ss = s.replace(s.split()[1], s.split()[1] + 'gy')
Harry Binswanger
fuente
66
Si bien este código puede responder la pregunta, proporcionar un contexto adicional con respecto a por qué y / o cómo responde la pregunta mejoraría significativamente su valor a largo plazo. Por favor, editar su respuesta a añadir un poco de explicación.
CodeMouse92
La respuesta correcta se indicó anteriormente string.replace funciona en python3.
jorfus