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.