我正在使用Python 2.7.x了解Twitter API。我保存了一些随机推文,我正在尝试处理它们。每个推文都转换为带有json.loads的字典,所有字典都是列表的一部分。
如果有一条推文,我希望能够从字典中提取某些字段。键都是unicode字符串。如果我循环遍历键,我可以毫不费力地打印值:
for i in tweet.keys():
print i, tweet[i]
所以上面的循环工作正常,但我没有运气搞清楚如何手动指定密钥。 “u'text'”是实际推文内容(用户的实际帖子)的关键。如果我尝试打印tweet ['text'],我会得到一个KeyError。我天真地尝试了推文[u'text'],但这也失败了KeyError。
我想我很好奇循环在执行tweet.keys()时所做的事情与手动指定键时我正在做的事情之间的区别。请注意,如果我在上面的循环中打印i的值,则打印密钥名称,但不包含unicode。当密钥是“u'text”时,i的值只是'text',或者至少是打印到终端的内容。
答案 0 :(得分:21)
Python 2可以透明地为您处理str
和unicode
键之间的转换,前提是文本可以编码为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'
这意味着,如果您为KeyError
获得tweet['text']
,那么该词典没有此类密钥。
答案 1 :(得分:-1)
Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> d = {u'text': u'Foo'}
>>> print "d:{text}".format(**d)
d:Foo