Substituir String em Python | Substituição de string Python [2022]

Publicados: 2021-01-02

Substituir caracteres e strings em Python é uma tarefa crucial quando se trata de Limpeza de Dados ou Processamento de Texto. Seus dados podem ter problemas de formatação com caracteres inúteis que precisam ser removidos, as categorias podem estar com problemas de ortografia etc. Além disso, durante o pré-processamento de texto para problemas baseados em NLP, a substituição de string é a etapa mais básica e importante ao preparar os dados textuais.

Neste tutorial, veremos várias maneiras de substituir diferentes tipos de strings. Se você estiver interessado em entrar na ciência de dados, confira nossas certificações em ciência de dados. Ao final deste tutorial, você terá o conhecimento do seguinte:

  • Método substituir() do Python
  • Método Regex sub()
  • join() e filtrar()
  • Substituindo dados numéricos em strings

Índice

Python substituir()

O método replace(old_str, new_str, count) consiste em 3 argumentos:

  • old_str: A string ou parte da string que precisa ser substituída
  • new_str: A string com a qual a string antiga precisa ser substituída
  • count: a contagem de vezes que a string específica precisa ser substituída

Vamos ver alguns exemplos para entender o funcionamento.

Substituição única

Mystr = “Esta é uma string de amostra”
Newstr = Mystr.replace( 'é' , 'era' )

#Saída:
Thwas era uma string de amostra

Se você se lembra, Strings em Python são imutáveis. Então, quando chamamos o método replace, ele essencialmente cria outro objeto string com os dados modificados. Além disso, não especificamos o parâmetro count no exemplo acima. Se não for especificado, o método replace substituirá todas as ocorrências da string.

Substituição múltipla

Mystr = “Esta é uma string de amostra”
Newstr = Mystr.replace( “s” , “X” )

#Saída:
ThiX iX a Xample Xtring

Várias substituições nas primeiras n ocorrências

Se você quiser apenas as primeiras N ocorrências,

Mystr = “Esta é uma string de amostra”
Newstr = Mystr.replace( “s” , “X” , 3 )

#Saída:
ThiX iX uma string Xample

Várias strings substituem

Nos exemplos acima, substituímos uma string um número diferente de vezes. Agora, e se você quiser substituir strings diferentes na mesma string grande. Podemos escrever uma função efetiva para ela e fazê-la usando o mesmo método.

Considere o exemplo acima, mas agora queremos substituir “h”, “is” e “ng” por “X”.

def MultipleStrings (mainStr, strReplaceList, newStr) :
# Iterando sobre as strings a serem substituídas
para elem em strReplaceList :
# Verificando se a string está na string principal
if elem em mainStr :
#Substitui a string
mainStr = mainStr.replace(elem, newStr)

return MainStr

Mystr = “Esta é uma string de amostra”
Newstr = MultipleStrings(Mystr, [ 'h' , 'is' , 'ng' ] , “X” )

#Saída:
TXX X uma amostra striX

Leia: Tutorial Python

Substituindo por regex

O regex do Python é um módulo específico para lidar com dados de texto – seja encontrando substrings, substituindo strings ou qualquer coisa. Regex tem a função sub() para encontrar e substituir substrings facilmente. Vamos examinar sua sintaxe e alguns casos de uso.

A função regex.sub(padrão, substituição, original_string) recebe 3 argumentos:

  • pattern: a substring que precisa ser correspondida e substituída.
  • substituição: pode ser uma string que precisa ser colocada no lugar ou uma função que pode ser chamada que retorna o valor que precisa ser colocado no lugar.
  • original_string: a string principal na qual a substring deve ser substituída.

Igual ao método replace, regex também cria outro objeto string com a string modificada. Vamos ver alguns exemplos de trabalho.

Removendo espaço em branco

Os espaços em branco podem ser tratados como caracteres especiais e substituídos por outros caracteres. No exemplo abaixo, pretendemos substituir os espaços em branco por “X”.

importar re
Mystr = “Esta é uma string de amostra”
# Substitua todos os espaços em branco em Mystr por 'X'
Newstr = re.sub( r”\s+” , 'X' , Mystr)

#Saída:
ThisXisXaXsampleXstring


Como vemos, todos os espaços em branco foram substituídos. O padrão é dado por r”\s+” que significa todos os caracteres de espaço em branco.

Removendo todos os caracteres especiais

Para remover todos os caracteres especiais, passaremos um padrão que corresponde a todos os caracteres especiais.

importar re
seqüência de importação
Mystr = “Tempo@@&[(000)]%%$@@66isit$$#$%-+Str”
padrão = r'[' + string.pontuação + ']'
# Substitui todos os caracteres especiais em uma string por X
Newstr = re.sub(padrão, 'X' , Mystr)

#Saída:
TempoXXXXX000XXXXXXX66isitXXXXXXXStr

Removendo substring como insensível a maiúsculas e minúsculas

Em dados da vida real, pode haver casos em que pode haver muitas versões da mesma palavra com diferentes caracteres maiúsculos e minúsculos. Para removê-los todos, colocando todas as palavras separadamente, pois o padrão não seria eficaz. A função regex sub() usa o sinalizador re.IGNORECASE para ignorar os casos. Vamos ver como isso funciona.

importar re
Mystr = “Este é um exemplo de Istring”
# Substitui substring em uma string por uma abordagem que não diferencia maiúsculas de minúsculas
Newstr = re.sub( r'is' , '**' , Mystr, flags=re.IGNORECASE)

#Saída:
Th** ** uma amostra **tring

Removendo vários caracteres usando regex

A função regex pode remover facilmente vários caracteres de uma string. Abaixo está um exemplo.

importar re
Mystr = “Esta é uma string de amostra”
padrão = r'[hsa]'
# Remove os caracteres 'h', 's' e 'a' de uma string
Newstr = re.sub(padrão, , Mystr)

#Saída:
Ti mple tring

Substituindo usando join()

Outra maneira de remover ou substituir caracteres é percorrer a string e verificá-los em relação a alguma condição.

charList = [ 'h' , 's' , 'a' ]
Mystr = “Esta é uma string de amostra”
# Remove todos os caracteres da lista, da string
Newstr = .join((elem for elem em Mystr se elem não estiver em charList))

#Saída:
Ti mple tring

Substituindo usando join() e filter()

O exemplo acima também pode ser feito usando a função de filtro.

Mystr = “Esta é uma string de amostra”
charList = [ 'h' , 's' , 'a' ]
# Remove todos os caracteres da lista, da string
Newstr = “” .join(filter( lambda k: k não está em charList , Mystr))

#Saída:
Estou tentando

Deve ler: aplicativos Python fascinantes no mundo real

Substituindo números

Muitas vezes os dados numéricos também estão presentes nas strings que podem precisar ser removidas e processadas separadamente como um recurso diferente. Vamos ver alguns exemplos para ver como eles podem ser implementados.

Usando regex

Considere a string abaixo da qual precisamos remover os dados numéricos.

Mystr = “Amostra string9211 do ano 20xx”
padrão = r'[0-9]'
# Corresponde a todos os dígitos da string e os substitui por uma string vazia
Newstr = re.sub(padrão, “” , Mystr)

#Saída:
Sequência de amostra do ano xx

No código acima, usamos o padrão de correspondência r'[0-9]' para corresponder a todos os dígitos.

Usando a função join()

Também podemos iterar na string e filtrar os dígitos usando o método isdigit() que retorna False para alfabetos.

Mystr = “Amostra string9211 do ano 20xx”
# Itera sobre os caracteres na string e une todos os caracteres, exceto dígitos
Newstr = “” .join((item para item em Mystr se não for item.isdigit()))

#Saída:
Sequência de amostra do ano xx

Usando join() e filter()

Da mesma forma, também podemos colocar a condição de filtragem na função de filtro para retornar apenas os caracteres que retornam True .

Mystr = “Amostra string9211 do ano 20xx”

# Filtre todos os dígitos dos caracteres na string e junte os caracteres restantes
Newstr = “” .join(filter( lambda item: não item.isdigit(), Mystr))

#Saída:
Sequência de amostra do ano xx

Antes de você ir

Cobrimos muitos exemplos mostrando diferentes maneiras de remover ou substituir caracteres/espaços em branco/números de uma string. É altamente recomendável que você experimente mais exemplos e maneiras diferentes de fazer os exemplos acima e também mais exemplos de sua preferência.

Se você está curioso para aprender sobre python, ciência de dados, confira o Programa PG Executivo em Ciência de Dados do IIIT-B & upGrad, criado para profissionais que trabalham e oferece mais de 10 estudos de caso e projetos, workshops práticos práticos, orientação com especialistas do setor , 1-on-1 com mentores do setor, mais de 400 horas de aprendizado e assistência de trabalho com as principais empresas.

Qual é a necessidade do método de substituição de string em Python?

Essa função se torna muito útil quando você está aplicando técnicas de limpeza de dados a ela. Caracteres desnecessários ou inúteis podem ser facilmente removidos usando esta função. A substituição de strings ou caracteres não é usada apenas na limpeza de dados, mas também em problemas de processamento de PNL.
Ter esses tipos de métodos para lidar com strings é importante, pois todo o campo da ciência de dados lida com grandes blocos de dados.

Quais são as vantagens de usar tipos de dados de string?

Strings são úteis, pois você pode armazenar grandes quantidades de dados com facilidade usando esse tipo de dados. Python suporta um bom número de métodos úteis para realizar operações em strings. Além disso, as strings são mutáveis ​​em Python, o que reduz a geração de erros e também são mais baratas.
A string é um dos tipos de dados internos mais usados ​​em Python. Não apenas em python, mas muitas outras linguagens também suportam isso como um tipo de dados predefinido e suportam vários métodos para operar neles.