Como posso alterar qualquer tipo de dados em uma string no Python?
Como posso alterar qualquer tipo de dados em uma string no Python?
Respostas:
myvariable = 4
mystring = str(myvariable) # '4'
Além disso, tente alternativamente repr:
mystring = repr(myvariable) # '4'
Isso é chamado de "conversão" em python e é bastante comum.
str(u'ä')
não vai funcionar. No entanto repr(u'ä')
vai funcionar.
str
destina-se a produzir uma representação de string dos dados do objeto. Se você está escrevendo sua própria turma e deseja str
trabalhar para você, adicione:
def __str__(self):
return "Some descriptive string"
print str(myObj)
vai ligar myObj.__str__()
.
repr
é um método semelhante, que geralmente produz informações sobre as informações da classe. Para a maioria dos objetos da biblioteca principal, repr
produz o nome da classe (e algumas vezes algumas informações da classe) entre colchetes angulares. repr
será usado, por exemplo, apenas digitando seu objeto no painel de interações, sem usar print
ou qualquer outra coisa.
Você pode definir o comportamento de repr
seus próprios objetos, assim como o comportamento de str
:
def __repr__(self):
return "Some descriptive string"
>>> myObj
no painel de interações ou repr(myObj)
resultará emmyObj.__repr__()
object.__repr__
representação entre colchetes angulares ao estilo, mas muitos dos objetos mais usados não. A regra de ouro para repr
é que se faz sentido para retornar código Python que poderiam ser avaliadas para produzir o mesmo objeto, fazer isso, assim como str
, frozenset
, e mais outras builtins fazer, mas se isso não acontecer, use o ângulo do suporte para garantir que o que você retorne não possa ser confundido com uma repr legível por humanos e avaliada como fonte.
list
que inclui ele próprio retorna algo que não apenas parece, mas é um código avaliável, que avalia a coisa errada - mas os desenvolvedores principais nunca aceitaram isso como licença para expandir o mesmo comportamento no stdlib.)
Vejo que todas as respostas recomendam o uso str(object)
. Pode falhar se o seu objeto tiver mais do que caracteres ascii e você verá um erro semelhante ordinal not in range(128)
. Esse foi o meu caso enquanto eu estava convertendo a lista de strings em outro idioma que não o inglês
Eu o resolvi usando unicode(object)
str(object)
fará o truque.
Se você deseja alterar a maneira como o objeto é stringificado, defina o __str__(self)
método para a classe do objeto. Esse método deve retornar o objeto str ou unicode.
str(any_var)
ouany_var.__str__()
timeit
módulo), você deve usar, str(any_var)
pois é mais legível para humanos e permite se beneficiar de casos em que any_var
define, __repr__()
mas não ' t define __str__()
.
Use o str
built-in:
x = str(something)
Exemplos:
>>> str(1)
'1'
>>> str(1.0)
'1.0'
>>> str([])
'[]'
>>> str({})
'{}'
...
A partir da documentação:
Retorne uma string contendo uma representação bem imprimível de um objeto. Para cadeias, isso retorna a própria cadeia. A diferença com repr (objeto) é que str (objeto) nem sempre tenta retornar uma string aceitável para eval (); seu objetivo é retornar uma sequência imprimível. Se nenhum argumento for fornecido, retornará a string vazia, ''.
Com str(x)
. No entanto, todo tipo de dados pode definir sua própria conversão de cadeia, portanto, pode não ser o que você deseja.
Você pode usar %s
como abaixo
>>> "%s" %([])
'[]'
Basta usar str
- por exemplo:
>>> str([])
'[]'
Cuidado se você realmente deseja "alterar" o tipo de dados. Como em outros casos (por exemplo, alterando o iterador em um for
loop), isso pode gerar um comportamento inesperado:
>> dct = {1:3, 2:1}
>> len(str(dct))
12
>> print(str(dct))
{1: 31, 2: 0}
>> l = ["all","colours"]
>> len(str(l))
18
str(var)
? é isso que você está procurando?