我正在编写一个快速而又脏的脚本来获取Chromium的书签并将它们转换为Openbox的管道菜单。 Chromium将其书签存储在名为书签的文件中,该文件以字典形式存储信息,如下所示:
{ "checksum": "99999999999999999999", "roots": { "bookmark_bar": { "children": [ { "date_added": "9999999999999999999", "id": "9", "name": "Facebook", "type": "url", "url": "http://www.facebook.com/" }, { "date_added": "999999999999", "id": "9", "name": "Twitter", "type": "url", "url": "http://twitter.com/"
如何在Python中使用此文件打开此字典并将其分配给变量。我知道你用open()
打开一个文件,但我真的不知道从那里去哪里。最后,我希望能够从像bookmarks[bookmarks_bar][children][0][name]
这样的变量访问字典中的信息并让它返回'Facebook'
答案 0 :(得分:4)
你知道这是不是一个json文件?如果是这样,python提供了一个json库。
Json可用作数据序列化/交换格式。这很好,因为它是跨平台的。像你问的那样导入这个似乎相当容易,这是文档中的一个例子:
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
[u'foo', {u'bar': [u'baz', None, 1.0, 2]}]
因此,在您的情况下,它看起来像:
import json
with open(file.txt) as f:
text = f.read()
bookmarks = json.loads(text)
print bookmarks[bookmarks_bar][children][0][name]
答案 1 :(得分:1)
JSON绝对是"对"这样做的方法,但对于快速而肮脏的脚本eval()
可能就足够了:
with open('file.txt') as f:
bookmarks = eval(f.read())