Verwendung von string.replace () in Python 3.x.

279

String.replace () ist in Python 3.x veraltet. Was ist der neue Weg, dies zu tun?

Tauwelt
quelle
11
FWIW, ich hatte die gleiche Verwirrung. Google "Python String Replace" führte mich zu alten veralteten String-Funktionen in Python 2.7. Meiner Meinung nach könnte dieser Abschnitt ein großes, fett gedrucktes Feld verwenden, in dem "string.xxx ()" vs "xxx (string)" erklärt und Personen zu den nicht veralteten String-Methoden geleitet werden, z. B. zu docs.python.org/library/stdtypes.html # String-Methoden
ToolmakerSteve
8
Die Python-Dokumentation ist ein absolutes Durcheinander, wenn man bedenkt, dass sie als ideale Muttersprache angepriesen wird. Sehr oft ist das Zeug da, aber wegen der schlechten Organisation ist es oft nicht gut von Suchmaschinen oder sogar ihrer eigenen Website indiziert. Schauen Sie sich den Link von ToolMakerSteve an. Die wichtigsten Zeichenfolgenfunktionen sind in Standardtypen integriert. Dies tritt nicht auf, wenn Sie nach Zeichenfolgenfunktionen suchen.
Andrew S
10
Um es klar auszudrücken: string.replace () ist in Python 3 eigentlich nicht veraltet.
sboggs11
2
Es ist in den integrierten Typen für 3.x docs.python.org/3.7/library/stdtypes.html#str.replace
JerodG
1
Manchmal schreiben Leute "str.replace", wenn sie [Ihre Stringvariable] .replace meinen. Da 'str' auch der Name der relevanten Klasse ist, kann dies verwirrend sein.
TextGeek

Antworten:

315

Wie in 2.x Verwendung str.replace().

Beispiel:

>>> 'Hello world'.replace('world', 'Guido')
'Hello Guido'
Ignacio Vazquez-Abrams
quelle
4
Das Modul "re" (regulärer Ausdruck) bietet Alternativen für (einige? Alle?) Veraltete Zeichenfolgenfunktionen. In diesem Fall re.sub().
ToolmakerSteve
8
@ToolmakerSteve: stringFunktionen sind veraltet. strMethoden sind nicht.
Ignacio Vazquez-Abrams
6
FWIW, Immer wenn ich google, scheine ich bei den alten veralteten Zeichenfolgenfunktionen zu landen. Hier ist der Link zu den (nicht veralteten) String-Methoden. docs.python.org/3.3/library/stdtypes.html#string-methods ~ or_for_2 ~ docs.python.org/2/library/stdtypes.html#string-methods
ToolmakerSteve
36
Wenn ich zum Stapeln eines Überlaufs kommen muss, um in der Python-Dokumentation zu navigieren, liegt ein klares Problem vor. Python-Team, wenn Sie lesen. SORTIERE ES AUS!
Andrew S
2
Rufen Sie die Methode für das Objekt auf, nicht für die Klasse. 'foo'.replace(...)
Ignacio Vazquez-Abrams
108

replace()ist eine Methode von <class 'str'>in Python3:

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

Die replace () -Methode in Python 3 wird einfach verwendet von:

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

quelle
2
Denken Sie daran, dass Sie auch nicht 3 setzen können und es alle Zufälle ändern würde.
Ender Look
4

Sie können str.replace () als Kette von str.replace () verwenden . Denken Sie, Sie haben eine Zeichenfolge wie 'Testing PRI/Sec (#434242332;PP:432:133423846,335)'und möchten alle '#',':',';','/'Zeichen durch ersetzen '-'. Sie können es entweder auf diese Weise ersetzen (normaler Weg),

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

oder auf diese Weise (Kette von 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
quelle
3

Versuche dies:

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

Zu Ihrer Information: Wenn Sie einige Zeichen an ein beliebiges, positionsfestes Wort innerhalb der Zeichenfolge anhängen (z. B. Ändern eines Adjektivs in ein Adverb durch Hinzufügen des Suffix -ly ), können Sie das Suffix zur besseren Lesbarkeit am Ende der Zeile einfügen. Verwenden Sie dazu split()inside replace():

s="The dog is large small"
ss=s.replace(s.split()[3],s.split()[3]+'ly')
ss
'The dog is largely small'
Ooker
quelle
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
quelle
6
Während dieser Code die Frage beantworten kann, würde die Bereitstellung eines zusätzlichen Kontexts darüber, warum und / oder wie er die Frage beantwortet, ihren langfristigen Wert erheblich verbessern. Bitte bearbeiten Sie Ihre Antwort, um eine Erklärung hinzuzufügen.
CodeMouse92
Die richtige Antwort ist zuvor angegeben. String.replace funktioniert in Python3.
Jorfus