Travailler avec unicode clés dans un dictionnaire python

Je suis en train d'apprendre à propos de l'API Twitter à l'aide de Python 2.7.x. J'ai sauvé un nombre aléatoire de tweets et je suis en train de traiter. Chaque tweet est converti à un dictionnaire json.les charges et tous les dictionnaires font partie d'une liste.

Un seul tweet, je veux être en mesure d'extraire certains champs du dictionnaire. Les touches sont toutes des chaînes unicode. Si je itérer sur les touches dans une boucle, je n'ai pas de problèmes d'impression les valeurs:

for i in tweet.keys():
    print i, tweet[i]

De sorte que la boucle ci-dessus fonctionne très bien, mais je n'ai pas eu la chance de trouver comment spécifier manuellement la clé. "u texte'" est la clé pour le tweet de contenu (de l'utilisateur réel de la poste). Si j'essaie d'imprimer tweet['texte'], je reçois un KeyError. J'ai naïvement essayé tweet[u texte'] mais qui échoue avec une KeyError trop.

Je suppose que je suis curieux de connaître la différence entre ce que la boucle est en train de faire comme il suit à travers un tweet.les touches() par rapport à ce que je fais quand manuellement je la spécification d'une clé. Notez que si j'imprime la valeur de i dans la boucle ci-dessus, le nom de la clé est imprimé, mais sans unicode emballage. Lorsque la clé est "u texte'", la valeur de i est juste un "texte", ou, au moins, c'est ce qui est imprimé sur le terminal.

Pourquoi ne pas le faire pour les clés, elem dans testDict.items(): print clé, elem
Depuis 'text' == u'text' (python implicitement encode / décode comme nécessaire ici), cela signifie simplement vous n'avez pas de clé dans votre dictionnaire.
La différence doit être alors que vous êtes à la recherche à un autre dictionnaire. Celui qui n' pas ont un 'text' clé.
Remarque pour d'autres lecteurs, ce qui est différent en python3, où la comparaison b'text' != 'text' n'est même pas autorisé
mais pas de chaîne unicode ne sera jamais affichée avec l' u préfixe.

OriginalL'auteur drumboots | 2014-07-02