373 votes

Comment utiliser string.replace() en python 3.x

La fonction string.replace() est dépréciée dans python 3.x. Quelle est la nouvelle façon de procéder ?

16 votes

Pour info, j'ai eu la même confusion. Google "python string replace" m'a conduit aux anciennes fonctions de chaîne dépréciées dans python 2.7. IMHO, cette section pourrait utiliser un gros encadré en gras expliquant "string.xxx()" vs "xxx(string)", et dirigeant les gens vers les méthodes de chaîne non dépréciées, par exemple vers docs.python.org/library/stdtypes.html#string-methods

17 votes

La documentation de Python est un véritable gâchis alors qu'il est présenté comme un premier langage idéal. Très souvent, la documentation est là, mais en raison de la mauvaise organisation, elle n'est souvent pas bien indexée par les moteurs de recherche ou même par leur propre site. Regardez le lien de ToolMakerSteve, les fonctions de base des chaînes de caractères sont regroupées dans des types standard. Cela n'apparaît pas lorsque vous recherchez des fonctions de chaîne de caractères.

19 votes

Pour être clair : string.replace() n'est en fait pas déprécié dans Python 3.

403voto

Ignacio Vazquez-Abrams Points 312628

Comme dans la version 2.x, utilisez str.replace() .

Exemple :

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

6 votes

Le module "re" (expression régulière) propose des alternatives pour (certaines ? toutes ?) les fonctions de chaîne de caractères dépréciées. Dans ce cas, re.sub() .

13 votes

@ToolmakerSteve : string sont dépréciées. str ne le sont pas.

7 votes

Pour info, à chaque fois que je cherche sur Google, j'ai l'impression de tomber sur les anciennes fonctions de chaîne de caractères dépréciées. Voici le lien vers les méthodes string (non dépréciées). docs.python.org/3.3/library/stdtypes.html#string-methods ~ou_pour_2~ docs.python.org/2/library/stdtypes.html#string-methods

129voto

kev Points 41855

replace() est une méthode de <class 'str'> dans python3 :

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

28voto

La méthode replace() dans python 3 est utilisée simplement par :

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

5 votes

Rappelez-vous que vous ne pouvez pas non plus mettre 3 et que cela changerait toutes les coïncidences.

16voto

Vous pouvez utiliser str.replace() en tant que chaîne de str.replace() . Pensez que vous avez une chaîne comme 'Testing PRI/Sec (#434242332;PP:432:133423846,335)' et vous voulez remplacer tous les '#',':',';','/' signe avec '-' . Vous pouvez le remplacer de cette façon (méthode normale),

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

ou de cette façon (chaîne de str.replace() )

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

7voto

crifan Points 1242

Document officiel pour str.replace de Python 3

document officiel : Python 3 str.replace

str.replace(old, new[, count])

Retourne une copie de la chaîne avec toutes les occurrences de la sous-chaîne old remplacées par new. Si l'argument facultatif count est donné, seules les premières occurrences du count sont remplacées.

correspondant à VSCode L'avis de syntaxe est :

enter image description here

str.replace(self : str, old, new, count) -> str

Deux méthodes à utiliser str.replace

  • Méthode 1 : utiliser le remplacement de str intégré ->. str.replace(strVariable, old, new[, count])

    replacedStr1 = str.replace(originStr, "from", "to")

  • Méthode 2 : utiliser le remplacement de la variable str ->. strVariable.replace(old, new[, count])

    replacedStr2 = originStr.replace("from", "to")

Démonstration complète

code :

originStr = "Hello world"

# Use case 1: use builtin str's replace -> str.replace(strVariable, old, new[, count])
replacedStr1 = str.replace(originStr, "world", "Crifan Li")
print("case 1: %s -> %s" % (originStr, replacedStr1))

# Use case 2: use str variable's replace -> strVariable.replace(old, new[, count])
replacedStr2 = originStr.replace("world", "Crifan Li")
print("case 2: %s -> %s" % (originStr, replacedStr2))

sortie :

case 1: Hello world -> Hello Crifan Li
case 2: Hello world -> Hello Crifan Li

capture d'écran :

enter image description here

Mon billet connexe (chinois) : Python 3str.replace

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