[u'String']
est une représentation textuelle d'une liste contenant une chaîne Unicode sur Python 2.
Si vous exécutez print(some_list)
alors c'est équivalent à
print'[%s]' % ', '.join(map(repr, some_list))
ie, pour créer une représentation textuelle d'un objet Python avec le type list
, la repr()
fonction est appelée pour chaque élément.
Ne confondez pas un objet Python et sa représentation de texte - repr('a') != 'a'
et même la représentation textuelle des diffère de représentation du texte: repr(repr('a')) != repr('a')
.
repr(obj)
renvoie une chaîne contenant une représentation imprimable d'un objet. Son but est d'être une représentation sans ambiguïté d'un objet qui peut être utile pour le débogage, dans une REPL. Souvent eval(repr(obj)) == obj
.
Pour éviter d'appeler repr()
, vous pouvez imprimer directement les éléments de la liste (s'ils sont tous des chaînes Unicode), par exemple: print ",".join(some_list)
—il imprime une liste séparée par des virgules des chaînes:String
N'encodez pas une chaîne Unicode en octets à l'aide d'un codage de caractères codé en dur, imprimez directement Unicode à la place. Sinon, le code peut échouer car l'encodage ne peut pas représenter tous les caractères, par exemple si vous essayez d'utiliser l' 'ascii'
encodage avec des caractères non-ascii. Ou le code produit silencieusement mojibake (les données corrompues sont transmises plus loin dans un pipeline) si l'environnement utilise un codage incompatible avec le codage codé en dur.