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?

Dewsworld
fonte
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'
Ignacio Vazquez-Abrams
fonte
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'
kev
fonte
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

fonte
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)'
Kushan Gunasekera
fonte
3

Tente o seguinte:

mystring = "This Is A String"
print(mystring.replace("String","Text"))
Ed Dabbah
fonte
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'
Ooker
fonte
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
fonte
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