Domanda Lavorare con le chiavi unicode in un dizionario python


Sto imparando l'API di Twitter usando Python 2.7.x. Ho salvato una serie di tweet casuali e sto cercando di elaborarli. Ogni tweet viene convertito in un dizionario con json.loads e tutti i dizionari fanno parte di un elenco.

Dato un singolo tweet, voglio essere in grado di estrarre determinati campi dal dizionario. Le chiavi sono tutte stringhe unicode. Se faccio scorrere le chiavi in ​​un ciclo, non ho problemi a stampare i valori:

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

Quindi il ciclo sopra funziona bene, ma non ho avuto fortuna a capire come specificare manualmente la chiave. "u'text" "è la chiave per il contenuto attuale dei tweet (il post effettivo dell'utente). Se provo a stampare tweet ['text'], ottengo un KeyError. Ho ingenuamente provato tweet [u'text '] ma non funziona con KeyError.

Immagino di essere curioso della differenza tra ciò che il ciclo sta facendo mentre passa attraverso tweet.keys () rispetto a quello che sto facendo quando manualmente specificando una chiave. Si noti che se si stampa il valore di i nel ciclo sopra, il nome della chiave viene stampato, ma senza il wrapping Unicode. Quando la chiave è "u'text" ", il valore di i è solo" testo ", o almeno questo è ciò che viene stampato sul terminale.


12
2017-07-02 13:20


origine


risposte:


Python 2 gestisce la traduzione tra str e unicode chiavi in ​​modo trasparente per te, a condizione che il testo possa essere codificato in ASCII:

>>> d = {u'text': u'Foo'}
>>> d.keys()
[u'text']
>>> 'text' in d
True
>>> u'text' in d
True
>>> d['text']
u'Foo'
>>> d[u'text']
u'Foo'

Ciò significa che se ottieni un KeyError per tweet['text'], poi quel dizionario non ha una chiave del genere.


18
2017-07-02 13:24