ChatGPT解决这个技术问题 Extra ChatGPT

How to use string.replace() in python 3.x

The string.replace() is deprecated on python 3.x. What is the new way of doing this?

FWIW, I had the same confusion. Google "python string replace" took me to old deprecated string functions in python 2.7. IMHO, that section could use a big bold box explaining "string.xxx()" vs "xxx(string)", and directing people to the non-deprecated string methods, e.g. to docs.python.org/library/stdtypes.html#string-methods
Python documentation is an absolute shambles considering it is touted as an ideal first language. Quite often the stuff is there, but because of the poor way its organized, its often not indexed well by search engines or even their own site. Look at ToolMakerSteve's link, core string functions are lumpted in to standard types. This does not come up when you search for string functions.
To be clear: string.replace() is actually not deprecated on Python 3.
It's in the built-in types for 3.x docs.python.org/3.7/library/stdtypes.html#str.replace
Sometimes people write "str.replace" when they mean [your string variable].replace. Because 'str' is also the name of the relevant class, this can be confusing.

B
Boris Verkhovskiy

As in 2.x, use str.replace().

Example:

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

The "re" (regular expression) module has alternatives for (some? all?) deprecated string functions. In this case, re.sub().
@ToolmakerSteve: string functions are deprecated. str methods are not.
FWIW, Whenever I google, I seem to end up at the old deprecated string functions. Here is the link to the (not deprecated) string methods. docs.python.org/3.3/library/stdtypes.html#string-methods ~or_for_2~ docs.python.org/2/library/stdtypes.html#string-methods
If I have to come to stack overflow to navigate the Python documentation there is a clearly problem. Python team if you are reading. SORT IT OUT!
Call the method on the object, not the class. 'foo'.replace(...)
k
kev

replace() is a method of <class 'str'> in python3:

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

佚名

The replace() method in python 3 is used simply by:

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

Remember that also you can not put 3 and it would change all the coincidences.
K
Kushan Gunasekera

You can use str.replace() as a chain of str.replace(). Think you have a string like 'Testing PRI/Sec (#434242332;PP:432:133423846,335)' and you want to replace all the '#',':',';','/' sign with '-'. You can replace it either this way(normal way),

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

or this way(chain of str.replace())

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

Z
Zoe stands with Ukraine

Try this:

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

c
crifan

Official doc for str.replace of Python 3

official doc: Python 3's str.replace

str.replace(old, new[, count]) Return a copy of the string with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced.

corresponding VSCode's syntax notice is:

https://i.stack.imgur.com/aDYN3.png

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

Two method to use str.replace

Method 1: use builtin str's replace -> str.replace(strVariable, old, new[, count])

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

Method 2: use str variable's replace -> strVariable.replace(old, new[, count])

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

Full demo

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

output:

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

screenshot:

https://i.stack.imgur.com/A0f1Q.png

My related (Chinese) post: 【详解】Python 3中字符串的替换str.replace


O
Ooker

FYI, when appending some characters to an arbitrary, position-fixed word inside the string (e.g. changing an adjective to an adverb by adding the suffix -ly), you can put the suffix at the end of the line for readability. To do this, use 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'

D
Dr. Robert Brownell

Simple Replace: .replace(old, new, count) .

text = "Apples taste Good."
print(text.replace('Apples', 'Bananas'))          # use .replace() on a variable
Bananas taste Good.          <---- Output

print("Have a Bad Day!".replace("Bad","Good"))    # Use .replace() on a string
Have a Good Day!             <----- Output

print("Mom is happy!".replace("Mom","Dad").replace("happy","angry"))  #Use many times
Dad is angry!                <----- Output

Z
Zoe stands with Ukraine
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')

While this code may answer the question, providing additional context regarding why and/or how it answers the question would significantly improve its long-term value. Please edit your answer to add some explanation.
The correct answer is previously stated string.replace works in python3.