Come usare string.replace () in python 3.x


280

String.replace () è deprecato su python 3.x. Qual è il nuovo modo di farlo?


11
FWIW, ho avuto la stessa confusione. Google "sostituzione stringa python" mi ha portato a vecchie funzioni stringa obsolete in python 2.7. IMHO, quella sezione potrebbe usare una grande casella in grassetto che spiega "string.xxx ()" vs "xxx (stringa)" e indirizza le persone ai metodi di stringa non deprecati, ad esempio a docs.python.org/library/stdtypes.html # string-
method

8
La documentazione di Python è un caos assoluto considerando che è propagandata come prima lingua ideale. Abbastanza spesso il materiale è lì, ma a causa del modo in cui è organizzato, spesso non è ben indicizzato dai motori di ricerca o addirittura dal proprio sito. Guarda il link di ToolMakerSteve, le funzioni di stringa di base sono inserite nei tipi standard. Questo non viene visualizzato quando si cercano funzioni stringa.
Andrew S,

10
Per essere chiari: string.replace () non è in realtà deprecato su Python 3.
sboggs11

2
È nei tipi predefiniti
JerodG

1
A volte le persone scrivono "str.replace" quando intendono [la tua variabile di stringa] .replace. Poiché "str" ​​è anche il nome della classe pertinente, ciò può creare confusione.
TextGeek

Risposte:


315

Come in 2.x, utilizzare str.replace().

Esempio:

>>> 'Hello world'.replace('world', 'Guido')
'Hello Guido'

4
Il modulo "re" (espressione regolare) ha alternative per (alcune? Tutte?) Funzioni di stringa deprecate. In questo caso re.sub(),.
ToolmakerSteve

8
@ToolmakerSteve: le stringfunzioni sono obsolete. stri metodi non lo sono.
Ignacio Vazquez-Abrams,

6
FWIW, ogni volta che google, mi sembra di finire alle vecchie funzioni di stringa deprecate. Ecco il link ai metodi stringa (non deprecati). docs.python.org/3.3/library/stdtypes.html#string-methods ~ or_for_2 ~ docs.python.org/2/library/stdtypes.html#string-methods
ToolmakerSteve

36
Se devo arrivare allo stack di overflow per navigare nella documentazione di Python, c'è chiaramente un problema. Team Python se stai leggendo. Ordina!
Andrew S,

2
Chiamare il metodo sull'oggetto, non la classe. 'foo'.replace(...)
Ignacio Vazquez-Abrams,

108

replace()è un metodo di <class 'str'>in python3:

>>> 'hello, world'.replace(',', ':')
'hello: world'

13

Il metodo replace () in python 3 è usato semplicemente da:

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

2
Ricorda che anche tu non puoi mettere 3 e cambierebbe tutte le coincidenze.
Ender Guarda il

4

Puoi usare str.replace () come una catena di str.replace () . Pensa di avere una stringa simile 'Testing PRI/Sec (#434242332;PP:432:133423846,335)'e vuoi sostituire tutto il '#',':',';','/'segno con '-'. Puoi sostituirlo in questo modo (modo normale),

>>> 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 in questo modo (catena di str.replace () )

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

3

Prova questo:

mystring = "This Is A String"
print(mystring.replace("String","Text"))

1

Cordiali saluti, quando si aggiungono alcuni caratteri a una parola arbitraria, fissa nella posizione all'interno della stringa (ad esempio, cambiando un aggettivo in un avverbio aggiungendo il suffisso -ly ), è possibile mettere il suffisso alla fine della riga per leggibilità. Per fare questo, usa split()dentro replace():

s="The dog is large small"
ss=s.replace(s.split()[3],s.split()[3]+'ly')
ss
'The dog is largely small'

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')

6
Mentre questo codice può rispondere alla domanda, fornendo un contesto aggiuntivo per quanto riguarda il perché e / o il modo in cui risponde alla domanda migliorerebbe significativamente il suo valore a lungo termine. Si prega di modificare la risposta di aggiungere qualche spiegazione.
CodeMouse92,

La risposta corretta è stata precedentemente dichiarata string.replace funziona in python3.
Jorfus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.