Comment puis-je changer n'importe quel type de données en une chaîne en Python?
Comment puis-je changer n'importe quel type de données en une chaîne en Python?
Réponses:
myvariable = 4
mystring = str(myvariable) # '4'
aussi, essayez également repr:
mystring = repr(myvariable) # '4'
C'est ce qu'on appelle la «conversion» en python, et c'est assez courant.
str(u'ä')ne fonctionnera pas. Cependant repr(u'ä')fonctionnera.
strest destiné à produire une représentation sous forme de chaîne des données de l'objet. Si vous écrivez votre propre cours et que vous souhaitez strtravailler pour vous, ajoutez:
def __str__(self):
return "Some descriptive string"
print str(myObj)appellera myObj.__str__().
represt une méthode similaire, qui produit généralement des informations sur les informations de classe. Pour la plupart des objets de bibliothèque de base, reprproduit le nom de la classe (et parfois certaines informations de classe) entre crochets angulaires. reprsera utilisé, par exemple, en tapant simplement votre objet dans votre volet d'interactions, sans utiliser printni rien d'autre.
Vous pouvez définir le comportement de reprpour vos propres objets tout comme vous pouvez définir le comportement de str:
def __repr__(self):
return "Some descriptive string"
>>> myObjdans votre volet d'interactions, ou repr(myObj)entraîneramyObj.__repr__()
object.__repr__représentation de type crochet angulaire, mais la plupart des objets les plus couramment utilisés ne le font pas. La règle de base pour reprque s'il est logique de retourner le code Python qui pourrait être évaluée pour produire le même objet, faire, tout comme str, frozensetet la plupart des autres builtins font, mais si elle ne le fait pas, utilisez l'angle-support formulaire pour vous assurer que ce que vous retournez ne peut pas être confondu avec une représentation lisible par l'homme et évaluable en tant que source.
listqui inclut lui-même renvoie quelque chose qui non seulement ressemble mais est du code évaluable, qui évalue la mauvaise chose - mais les développeurs principaux n'ont jamais pris cela comme une licence pour développer le même comportement dans le stdlib.)
Je vois que toutes les réponses recommandent d'utiliser str(object). Cela peut échouer si votre objet a plus de caractères ascii et vous verrez une erreur comme ordinal not in range(128). C'était le cas pour moi pendant que je convertissais une liste de chaînes dans une langue autre que l'anglais
Je l'ai résolu en utilisant unicode(object)
str(object) fera l'affaire.
Si vous souhaitez modifier la manière dont l'objet est stringifié, définissez la __str__(self)méthode de la classe de l'objet. Une telle méthode doit retourner un objet str ou unicode.
str(any_var)ouany_var.__str__()
timeitmodule), vous devriez l'utiliser str(any_var)car il est plus lisible pour l'homme et permet de bénéficier de cas où any_vardéfinit __repr__()mais ne le fait pas ' t définir __str__().
Utilisez le strintégré:
x = str(something)
Exemples:
>>> str(1)
'1'
>>> str(1.0)
'1.0'
>>> str([])
'[]'
>>> str({})
'{}'
...
De la documentation:
Renvoie une chaîne contenant une représentation joliment imprimable d'un objet. Pour les chaînes, cela renvoie la chaîne elle-même. La différence avec repr (object) est que str (object) n'essaie pas toujours de renvoyer une chaîne acceptable pour eval (); son objectif est de renvoyer une chaîne imprimable. Si aucun argument n'est donné, renvoie la chaîne vide, «».
Utilisez simplement str- par exemple:
>>> str([])
'[]'
Soyez prudent si vous voulez vraiment "changer" le type de données. Comme dans d'autres cas (par exemple, changer l'itérateur dans une forboucle), cela peut provoquer un comportement inattendu:
>> 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)? c'est ça que tu cherches?