在Python字典中使用Unicode键
我正在学习如何用 Python 2.7.x 使用 Twitter 的 API。我保存了一些随机的推文,现在想处理这些推文。每条推文都被转换成一个字典,使用的是 json.loads,所有的字典都放在一个列表里。
对于单条推文,我想从字典中提取一些特定的字段。字典的键都是 Unicode 字符串。如果我在一个循环中遍历这些键,打印出它们的值没有问题:
for i in tweet.keys():
print i, tweet[i]
上面的循环运行得很好,但我一直搞不清楚怎么手动指定键。“u'text'”是实际推文内容的键(也就是用户的真实发帖内容)。如果我尝试打印 tweet['text'],就会出现 KeyError 错误。我天真地尝试了 tweet[u'text'],但也同样出现 KeyError 错误。
我想知道循环通过 tweet.keys() 遍历时和我手动指定键时有什么区别。注意,如果我在上面的循环中打印 i 的值,键名会被打印出来,但没有 Unicode 的包裹。当键是 “u'text'” 时,i 的值只是 'text',或者至少在终端上是这样打印的。
2 个回答
-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
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。
23
在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'
这就意味着,如果你在访问 tweet['text']
时遇到 KeyError
错误,那就说明这个字典里根本没有这个键。