Python / str() / Converter um objeto em uma string
str() do Python retorna uma representação legível de um objeto como string. Use-a para combinar números e texto ou guardar uma representação textual, sem alterar o tipo do objeto original. Decodificar bytes ou gerar JSON exige operações próprias para esses objetivos.
Conversão básica e tipo retornado
str(object) retorna um objeto str, por exemplo a partir de números e booleanos. Sem argumento, str() cria uma string vazia. Normalmente usa a representação __str__(), que uma classe personalizada pode definir. Consulte a referência oficial do tipo str.
Os exemplos precisam apenas de Python 3 e da biblioteca padrão. Salve o programa completo em UTF-8 como str_example.py e execute python str_example.py no terminal. Alguns ambientes usam python3. Os exemplos seguintes também são independentes: substitua o conteúdo do mesmo arquivo e execute novamente.
number = 42
text = str(number)
print(number, type(number).__name__)
print(text, type(text).__name__)
print("ID-" + text)
print(repr(str()))
print(str(None))
Saída esperada:
42 int
42 str
ID-42
''
None
Os dois valores aparecem como 42, mas seus tipos diferem. number continua inteiro; text é string. O '' mostrado com repr() tem comprimento zero. str(None) produz o texto None, não um valor vazio.
Conversão difere de formatação numérica
str() produz a representação básica de um número, sem definir casas decimais ou moeda. Para uma regra específica de exibição, utilize uma string formatada, como uma f-string.
price = 12.5
print(str(price))
print(f"{price:.2f}")
print("price=" + str(price))
12.5
12.50
price=12.5
12.50 é uma string exibida com duas casas decimais. O número original price permanece inalterado. Arredondamento de exibição e precisão de cálculo são questões separadas.
Decodificar bytes para obter texto
bytes armazena dados em bytes, enquanto str armazena texto Unicode. Apenas str(raw) fornece a representação do objeto bytes. Para recuperar os caracteres, informe a codificação real com decode() ou str(raw, encoding).
raw = "café".encode("utf-8")
print(str(raw))
print(raw.decode("utf-8"))
print(str(raw, "utf-8"))
b'caf\xc3\xa9'
café
café
O prefixo b e os escapes da primeira linha representam bytes. Somente as duas próximas linhas os decodificam como UTF-8. Se o arquivo ou a resposta foi codificado de outro modo, use essa codificação. Definir errors="ignore" só para ocultar erros pode descartar dados.
Escolher entre str(), repr() e JSON
str() é voltado à exibição legível; repr() ajuda a inspecionar uma representação durante o desenvolvimento. Mesmo repr() não garante código reconstruível para todo objeto. Para intercâmbio de dados use json.dumps(), que gera JSON, JavaScript Object Notation, um formato de texto padronizado.
import json
data = {"active": True, "count": 0}
print(str(data))
print(json.dumps(data))
print(str("hello\nworld"))
print(repr("hello\nworld"))
{'active': True, 'count': 0}
{"active": true, "count": 0}
hello
world
'hello\nworld'
O str() do dicionário usa aspas de Python e True, portanto não é automaticamente JSON. Uma quebra de linha é exibida de fato com str(); repr() mostra um escape como \n.
Transformar apenas None em texto vazio
Use is None se somente o valor ausente None deve virar vazio. str(value or "") também esvazia 0 e False, podendo perder seu significado.
for value in (None, 0, False):
text = "" if value is None else str(value)
print(repr(text))
''
'0'
'False'
Tratar erros de concatenação e decodificação
Um + direto entre string e número causa TypeError. Converta o número com str() ou use uma f-string. Bytes incompatíveis com a codificação escolhida causam UnicodeDecodeError: confira a codificação original e se os dados estão completos.
try:
print("ID-" + 42)
except TypeError:
print("TypeError")
try:
str(b"\xff", "utf-8")
except UnicodeDecodeError:
print("UnicodeDecodeError")
TypeError
UnicodeDecodeError
O último exemplo captura exceções para exibir seus tipos. A conversão também pode falhar se um __str__() personalizado retornar um tipo errado ou gerar uma exceção internamente. Nem toda falha decorre da concatenação.




