在python字典中使用unicode键

dru*_*ots 16 python unicode twitter dictionary

我正在使用Python 2.7.x了解Twitter API.我保存了一些随机推文,我正在尝试处理它们.每条推文都转换为带有json.loads的字典,所有字典都是列表的一部分.

给定一条推文,我希望能够从字典中提取某些字段.键都是unicode字符串.如果我循环遍历键,我可以毫不费力地打印值:

for i in tweet.keys():
    print i, tweet[i]
Run Code Online (Sandbox Code Playgroud)

所以上面的循环工作正常,但我没有运气搞清楚如何手动指定密钥."u'text'"是实际推文内容(用户的实际帖子)的关键.如果我尝试打印tweet ['text'],我会得到一个KeyError.我天真地尝试了推文[u'text'],但这也失败了KeyError.

我想我很好奇循环在执行tweet.keys()时所做的事情与手动指定键时我正在做的事情之间的区别.请注意,如果我在上面的循环中打印i的值,则打印密钥名称,但不包含unicode.当键是"u'text'"时,i的值只是'text',或者至少是打印到终端的那个.

Mar*_*ers 22

Python 2 可以为您透明地处理strunicode键之间的转换,前提是文本可以编码为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'
Run Code Online (Sandbox Code Playgroud)

这意味着如果你得到一个KeyErrorfor tweet['text'],那么那个字典没有这样的密钥.