Comme dans:
u'Hello'
Je suppose que cela indique "Unicode", est-ce correct?
Si oui, depuis quand est-il disponible?
Vous avez raison, voir .1.3. Chaînes Unicode.
C'est la syntaxe depuis Python 2.0.
Python 3 les a redondés, car le type de chaîne par défaut est Unicode. Les versions 3.0 à 3.2 les supprimaient, mais ils étaient ajoutés de nouveau dans 3.3 + pour assurer la compatibilité avec Python 2 afin de faciliter la transition de 2 à 3.
Le u dans u'Some String'
signifie que votre chaîne est une chaîne Unicode .
Q: Je suis extrêmement pressé et j'ai atterri ici à partir de Google Search. J'essaie d'écrire ces données dans un fichier, j'obtiens une erreur et j'ai besoin de la solution la plus simple, probablement imparfaite, de cette seconde.
R: Vous devriez vraiment lire Joel Minimum absolu, absolument tous les développeurs de logiciels, absolument ce qu'il faut savoir sur Unicode et les jeux de caractères (sans excuses!) essai sur les jeux de caractères.
Q: sry aucun pls de code temporel
Une amende. essayez str('Some String')
ou 'Some String'.encode('ascii', 'ignore')
. Mais vous devriez vraiment lire certaines des réponses et des discussions sur Conversion d'une chaîne Unicode et this excellent, excellent, introduction au codage de caractères.
Je suppose que cela indique "Unicode", est-ce correct?
Oui.
Si oui, depuis quand est-il disponible?
Python 2.x.
Dans Python 3.x, les chaînes utilisent Unicode par défaut et le préfixe u
n'est pas nécessaire. Remarque: dans Python 3.0-3.2, le u est une erreur de syntaxe. Dans Python 3.3+, il est à nouveau légal de faciliter l'écriture d'applications 2/3 compatibles.
Je suis venu ici parce que mon syndrome requests
était marqué par un syndrome de caractère drôle. Je pensais que response.text
me donnerait une chaîne correctement décodée, mais dans la sortie, j'ai trouvé de drôles caractères doubles où les umlauts allemands auraient dû être.
Il s'avère que response.encoding
était vide d'une manière ou d'une autre et donc response
ne savait pas comment décoder correctement le contenu et le traitait simplement comme ASCII (je suppose).
Ma solution consistait à obtenir les octets bruts avec 'response.content' et à y appliquer manuellement decode('utf_8')
. Le résultat était schöne Umlaute.
Le correctement décodé
fourrure
contre le mal décodé
pour
C'est Unicode.
Il suffit de mettre la variable entre str()
, et tout se passera bien.
Mais au cas où vous auriez deux listes comme celle-ci:
a = ['co32','co36']
b = [u'co32',u'co36']
Si vous cochez set(a)==set(b)
, cela deviendra faux, mais si vous procédez comme suit:
b = str(b)
set(a)==set(b)
Maintenant, le résultat sera vrai.
Ce qui suit devrait aider:
http://docs.python.org/library/functions.html#unicode
http://www.amk.ca/python/howto/unicode (passez à "Assistance Unicode Python" si vous connaissez déjà les principes Unicode)
Toutes les chaînes destinées aux humains doivent utiliser u "".
J'ai constaté que l'état d'esprit suivant était très utile lorsqu'il s'agissait de chaînes Python: tout Python chaînes de manifestes devraient utiliser la syntaxe u""
. La syntaxe ""
concerne uniquement les tableaux d'octets.
Avant de commencer, laissez-moi vous expliquer. La plupart des programmes Python commencent par utiliser ""
pour les chaînes. Mais ensuite, ils ont besoin de supporter la documentation sur Internet, alors ils commencent à utiliser "".decode
et tout à coup, ils obtiennent des exceptions partout pour décoder ceci et cela - tout cela à cause de l'utilisation de ""
pour les chaînes. Dans ce cas, Unicode agit comme un virus et fera des ravages.
Mais, si vous suivez mes règles, vous n'aurez pas cette infection (car vous serez déjà infecté).