Converter Bytes para String em Python

Ana Maria Gomes
4 minutos de leitura

Conteúdos do tutorial

Ao trabalhar com Python, especialmente no contexto de manipulação de saídas de programas externos, você pode se deparar com dados no formato de bytes. Esse é um cenário comum ao usar o módulo subprocess do Python para executar comandos do sistema. A saída que você recebe está em bytes, mas e se você precisar trabalhar com ela como uma string comum? Vamos explorar como converter bytes para string em Python.

Decodificando Bytes para String

A chave para converter bytes em string é entender o conceito de decodificação. No Python, as strings são Unicode, e quando você tem um objeto bytes, você precisa decodificá-lo para convertê-lo em uma string. Aqui está um exemplo simples:

# Suponha que temos um objeto bytes
objeto_em_bytes = b"abcde"

# Para convertê-lo em uma string, nós o decodificamos
objeto_em_string = objeto_em_bytes.decode("utf-8")
print(objeto_em_string)

No exemplo acima, usamos a codificação UTF-8 para decodificar o objeto bytes. UTF-8 é uma codificação amplamente usada e muitas vezes é o padrão. No entanto, é crucial decodificar os bytes usando a codificação que foi usada para codificá-los. Se você não tem certeza da codificação, precisará descobrir para evitar erros ou corrupção de dados.

Exemplo Prático com Subprocess

Digamos que você capturou a saída padrão de um programa externo usando o módulo subprocess do Python, e você quer converter essa saída, que está em bytes, para uma string. Veja como você pode fazer isso:

from subprocess import Popen, PIPE

# Executando um comando do sistema e capturando a saída
stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0]

# Decodificando o objeto bytes para uma string
string_de_saida = stdout.decode('utf-8')

# Agora você pode imprimir a saída como uma string normal
print(string_de_saida)

Métodos Alternativos

Em alguns casos, você pode ter uma lista de valores de bytes que deseja converter em uma string. Você pode usar a função map junto com chr para alcançar isso:

# Uma lista de valores de bytes
dado_em_bytes = [112, 52, 52]

# Converter a lista de bytes em uma string
string_dos_bytes = "".join(map(chr, dado_em_bytes))
print(string_dos_bytes)
Testar

Este método pega cada valor de byte, converte para o caractere correspondente e, em seguida, os une para formar uma string.

Resumo

Converter bytes em string no Python é uma tarefa comum que pode ser facilmente realizada usando o método decode em um objeto bytes. Lembre-se de usar a codificação correta para evitar quaisquer problemas. Neste post, cobrimos como decodificar um objeto bytes para uma string, como lidar com saídas de subprocessos e como converter uma lista de valores de bytes em uma string. Com essas técnicas, você será capaz de lidar com conversões de bytes para string com confiança em seus projetos Python.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse: