Neste artigo, discutiremos como substituir um ou vários caracteres em uma string no Python.
Python fornece uma função str.replace (), isto é
str.replace(old, new , count)
Ela retorna um novo objeto string que é uma cópia de string existente com substituída contente. Além disso,
- Se a contagem não for fornecida, ele retornará uma string com todas as ocorrências de ‘antigo’, substituída por ‘nova’ string.
- Se o parâmetro de contagem for passado, ele retornará retorna uma string com a primeira ‘contagem’ de ocorrências da string ‘antiga’ substituída por ‘nova’ string.
Vamos entender por exemplos,
Substitua todas as ocorrências de um determinado caractere / string em uma string
Suponha que temos uma string, ou seja,
mainStr = "Hello, This is a sample string"
Agora, vamos substituir todas as ocorrências de ‘s ‘com’ X ‘, ou seja,
"""Replace all occurrences of given character or string in main string"""otherStr = mainStr.replace("s" , "X")
O conteúdo de otherStr é o seguinte,
Hello, ThiX iX a Xample Xtring
Como strings são imutáveis em Python, portanto, não podemos alterar seu conteúdo. Portanto, funções de membro como replace () retornam uma nova string.
Como não fornecemos o parâmetro de contagem na função replace (). Portanto, ele substituirá todas as ocorrências de ‘s’ por ‘X’. Mas e se quisermos substituir apenas as primeiras ocorrências em vez de todas? Vamos ver como fazer isso,
Substitua as primeiras n ocorrências de determinado caractere / sub string em uma string
Suponha que temos uma string, por exemplo,
mainStr = "Hello, This is a sample string"
Agora, vamos substituir as 2 primeiras ocorrências de ‘s’ por ‘XXXS’, ou seja,
"""Replace First 2 occurrences of given character or string in main string"""otherStr = mainStr.replace("s" , "XXXS", 2)
O conteúdo de otherStr é o seguinte,
Hello, ThiXXXS iXXXS a sample string
Como passamos o parâmetro de contagem como 2, apenas as 2 primeiras ocorrências de ‘s’ serão substituídas na cópia retornada.
Substitua vários caracteres / strings em uma string
A função str.replace () pode substituir apenas as ocorrências de uma determinada substring. Mas e se quisermos substituir várias sub strings em uma determinada string?
Suponha que temos uma string, por exemplo,
mainStr = "Hello, This is a sample string"
Agora, como substituir todas as ocorrências desses três caracteres ‘s’, ‘l’, ‘a’ por esta string ‘AA’?
Vamos criar uma nova função em replace () para fazer isso, ou seja,
"""Replace a set of multiple sub strings with a new string in main string."""def replaceMultiple(mainString, toBeReplaces, newString): # Iterate over the strings to be replaced for elem in toBeReplaces : # Check if string is in the main string if elem in mainString : # Replace the string mainString = mainString.replace(elem, newString) return mainString
Ele irá substituir todas as ocorrências de strings em List toBeReplaces por newString na lista fornecida principal mainString.
Vamos ver como substituir as ocorrências de por “AA”, ou seja,
O conteúdo de otherStr é o seguinte,
HeAAAAo, ThiAA iAA AA AAAAmpAAe AAtring
O exemplo completo é o seguinte,
Resultado:
String with replaced Content : Hello, ThiX iX a Xample XtringHello, ThiXXXS iXXXS a sample stringHeAAAAo, ThiAA iAA AA AAAAmpAAe AAtring