Como usar string.replace () no python 3.x


280

O string.replace () está obsoleto no python 3.x. Qual é a nova maneira de fazer isso?


11
FWIW, eu tive a mesma confusão. O "python string replace" do Google levou-me a antigas funções de string obsoletas no python 2.7. IMHO, essa seção poderia usar uma grande caixa em negrito explicando "string.xxx ()" vs "xxx (string)" e direcionando as pessoas para os métodos de string não obsoletos, por exemplo, para docs.python.org/library/stdtypes.html # strings-methods
— Toolmaker

8
A documentação do Python é uma confusão absoluta, considerando que é apresentada como a primeira linguagem ideal. Muitas vezes, o material está lá, mas, devido à má organização da organização, muitas vezes não é bem indexado pelos mecanismos de pesquisa ou mesmo pelo próprio site. Veja o link do ToolMakerSteve, as funções principais das strings são agrupadas nos tipos padrão. Isso não aparece quando você procura por funções de string.
— Andrew S #

10
Para ser claro: string.replace () realmente não é obsoleto em Python 3.
— sboggs11

2
Está nos tipos internos do
— JerodG

1
Às vezes, as pessoas escrevem "str.replace" quando significam [sua variável de string] .replace. Como 'str' também é o nome da classe relevante, isso pode ser confuso.
— TextGeek

Respostas:


315

Como no 2.x, use str.replace().

Exemplo:

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

4
O módulo "re" (expressão regular) possui alternativas para (algumas? Todas?) Funções de string obsoletas. Nesse caso re.sub(),.
— usar o seguinte

8
@ToolmakerSteve: as stringfunções estão obsoletas. strmétodos não são.
— Ignacio Vazquez-Abrams

6
FWIW, sempre que procuro no Google, pareço acabar com as antigas funções de string obsoletas. Aqui está o link para os métodos de string (não obsoletos). 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 eu tiver que chegar ao estouro da pilha para navegar na documentação do Python, há um problema claro. Equipe Python, se você estiver lendo. CLASSIFIQUE PARA FORA!
— Andrew S

2
Chame o método no objeto, não na classe. 'foo'.replace(...)
— Ignacio Vazquez-Abrams

108

replace()é um método <class 'str'>no python3:

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

13

O método replace () no python 3 é usado simplesmente por:

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
Lembre-se que também você não pode colocar 3 e isso mudaria todas as coincidências.
— Ender Olhe

4

Você pode usar str.replace () como uma cadeia de str.replace () . Pense que você tem uma string como 'Testing PRI/Sec (#434242332;PP:432:133423846,335)'e deseja substituir todo o '#',':',';','/'sinal com '-'. Você pode substituí-lo desta maneira (maneira normal),

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

ou dessa maneira (cadeia de 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

Tente o seguinte:

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

1

FYI, ao anexar alguns caracteres a uma palavra arbitrária e com posição fixa dentro da string (por exemplo, alterar um adjetivo para um advérbio adicionando o sufixo -ly ), você pode colocar o sufixo no final da linha para facilitar a leitura. Para fazer isso, use 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
Embora esse código possa responder à pergunta, fornecer um contexto adicional a respeito de por que e / ou como responde à pergunta melhoraria significativamente seu valor a longo prazo. Por favor edite sua resposta para adicionar alguma explicação.
— CodeMouse92

A resposta correta é declarada anteriormente string.replace funciona em python3.
— jorfus
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.