Search
Close this search box.
Decodificação de strings em Python com decode()
Decodificação de strings

Posts Relacionados:

O método decode() permite a decodificação de strings em Python, uma atividade essencial especialmente para quem realiza web scraping com frequência para obter dados para IA.

Receba nossa newsletter

Decodificação de Strings

As strings em Python são armazenadas como Unicode. Isso significa que cada caractere em uma string é representado por um ponto de código. Para armazenamento eficiente dessas strings, a sequência de pontos de código precisa ser representada na memória como um conjunto de unidades de código. As unidades de código são mapeadas para bytes de 8 bits. As regras para traduzir uma string Unicode em uma sequência de bytes são chamadas de codificação de caracteres ou apenas uma codificação. Consequentemente, a codificação de strings é uma prática essencial para armazenamento.

decode() Python

Uma vez que as strings são codificadas para bytes, elas precisam ser decodificadas novamente em strings para poderem ser lidas. Portanto, semelhante à codificação de uma string, podemos realizar a decodificação de strings a partir de um fluxo de bytes usando a função decode(). Ou seja, decode() é usado em objetos bytes, enquanto encode() é usado em objetos string.

Decodificação de strings em Python com decode()

O método decode() é usado para converter bytes em uma string. É o oposto de encode(), que converte uma string em bytes. A decodificação depende do formato no qual uma string foi codificada. A sintaxe básica é mostrada abaixo:

				
					bytes_object.decode(encoding, errors)
				
			

No trecho acima, encoding representa o formato de decodificação e errors é um argumento opcional que informa como o método deve proceder em caso de erros. O parâmetro bites_object se refere ao objeto bytes que precisa ser convertido. Se a decodificação não for especificada no decode(), UTF-8 é o padrão. As codificações comuns incluem ‘utf-8’, ‘ascii’, ‘latin-1’, ‘cp1252’, etc. Veja um exemplo ilustrativo:

				
					a = 'a frequência de ocorrências de acidentes é alta em São Paulo.'
 
# Primeiro realizamos a codificação com UTF-8 para converter a string em bytes
string_codificada = a.encode('utf-8')
print(string_codificada)
# resultado: b'a frequ\xc3\xaancia de ocorr\xc3\xaancias de acidentes \xc3\xa9 alta em S\xc3\xa3o Paulo.'

# decodificação de bytes em string
string_decodificada = string_codificada.decode('utf-8')
print(string_decodificada)
# resultado: a frequência de ocorrências de acidentes é alta em São Paulo. 
				
			

Neste exemplo, primeiro convertemos a string em bytes com encode() para podermos posteriormente realizar a decodificação de strings com decode().

Lidando com Erros

Como a codificação e a decodificação de uma string de entrada dependem do formato, é preciso ter cuidado ao codificar/decodificar. Se usarmos o formato errado, isso resultará em erros. O trecho abaixo mostra a importância da codificação e decodificação nos formatos corretos. A primeira decodificação está incorreta, pois tenta decodificar uma string de entrada codificada no formato UTF-8 como ASCII. O segundo exemplo está correto, pois os formatos de codificação e decodificação são os mesmos.

				
					# tenta decodificar com formato errado
string_codificada = b'a frequ\xc3\xaancia de ocorr\xc3\xaancias de acidentes \xc3\xa9 alta em S\xc3\xa3o Paulo.'
string_decodificada1 = string_codificada.decode('ascii')
print(string_decodificada1)
# 'ascii' codec can't decode byte 0xc3 in position 7: ordinal not in range(128)

# decodificação com formato correto
string_decodificada2 = string_codificada.decode('utf-8')
print(string_decodificada2)
# resultado: a frequência de ocorrências de acidentes é alta em São Paulo.
				
			

Uma forma alternativa de evitar os erros é especificar no método decode() argumentos como ‘ignore’ para ignorar dados inválidos ou ‘replace’, para substituir dados inválidos por um marcador de substituição. Veja exemplos ilustrativos abaixo:

				
					
# ignore
string_codificada = b'a frequ\xc3\xaancia de ocorr\xc3\xaancias de acidentes \xc3\xa9 alta em S\xc3\xa3o Paulo.'
string_decodificada1 = string_codificada.decode(encoding='ascii', errors='ignore') # ignora erros
print(string_decodificada1)
# resultado: a frequncia de ocorrncias de acidentes  alta em So Paulo.

# replace
string_decodificada2 = string_codificada.decode(encoding='ascii', errors='replace') # substitui erros
print(string_decodificada2)
# resultado: a frequ��ncia de ocorr��ncias de acidentes �� alta em S��o Paulo.
				
			

Também é importante mencionar que existem ferramentas como chardet que auxiliam na identificação do formato de codificação.

Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.

Imagem com IA Generativa – Dia 199

IA generativa img 199

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial