7

I want to have a dictionary from

 >>> page_detail_string = urllib2.urlopen("http://graph.facebook.com/Ideas4India").read()

It returns a string like

>>> page_detail_string
'{"about":"Ideas for development of India","category":"Community","description":"Platform where you can discuss and share your ideas which you think might help in betterment of our country.\\nPlease respect other community members and do not talk politics here.","is_published":true,"talking_about_count":0,"username":"Ideas4India","were_here_count":0,"id":"250014455083430","name":"Ideas 4 India","link":"http:\\/\\/www.facebook.com\\/Ideas4India","likes":23}'

Now i want to convert it to dictionary which i can be easily done by using ast.literal_eval

>>> import ast
>>> dict_page = ast.literal_eval(page_detail_string)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/ast.py", line 80, in literal_eval
return _convert(node_or_string)
File "/usr/lib/python2.7/ast.py", line 63, in _convert
in zip(node.keys, node.values))
File "/usr/lib/python2.7/ast.py", line 62, in <genexpr>
return dict((_convert(k), _convert(v)) for k, v
File "/usr/lib/python2.7/ast.py", line 79, in _convert
raise ValueError('malformed string')

but I think it throws this error because of

"is_published":true

Is there any way i can convert it to dictionary by stripping above key and value ("is_published":true).

Thanks

asked Mar 24, 2013 at 7:23

3 Answers 3

18

What you get is a json string, you shoule use json.loads to convert to dict

import json
json.loads(page_detail_string)
answered Mar 24, 2013 at 7:28
Sign up to request clarification or add additional context in comments.

Comments

8

Use the json module

import json
json.loads(page_detail_string)

To read more about the json module, check out http://docs.python.org/2/library/json.html

answered Mar 24, 2013 at 7:25

Comments

7

Use the json module:

In [1]: s = '{"about":"Ideas for development of India","category":"Community","description":"Platform where you can discuss and share your ideas which you think might help in betterment of our country.\\nPlease respect other community members and do not talk politics here.","is_published":true,"talking_about_count":0,"username":"Ideas4India","were_here_count":0,"id":"250014455083430","name":"Ideas 4 India","link":"http:\\/\\/www.facebook.com\\/Ideas4India","likes":23}'
In [2]: import json
In [3]: json.loads(s)
Out[3]: 
{u'about': u'Ideas for development of India',
 u'category': u'Community',
 u'description': u'Platform where you can discuss and share your ideas which you think might help in betterment of our country.\nPlease respect other community members and do not talk politics here.',
 u'id': u'250014455083430',
 u'is_published': True,
 u'likes': 23,
 u'link': u'http://www.facebook.com/Ideas4India',
 u'name': u'Ideas 4 India',
 u'talking_about_count': 0,
 u'username': u'Ideas4India',
 u'were_here_count': 0}

Also, note that you can use json.load (instead of json.loads) directly on the file object:

In [4]: import urllib2
In [5]: json.load(urllib2.urlopen("http://graph.facebook.com/Ideas4India"))
Out[5]: 
{u'about': u'Ideas for development of India',
 u'category': u'Community',
 u'description': u'Platform where you can discuss and share your ideas which you think might help in betterment of our country.\nPlease respect other community members and do not talk politics here.',
 u'id': u'250014455083430',
 u'is_published': True,
 u'likes': 23,
 u'link': u'http://www.facebook.com/Ideas4India',
 u'name': u'Ideas 4 India',
 u'talking_about_count': 0,
 u'username': u'Ideas4India',
 u'were_here_count': 0}
answered Mar 24, 2013 at 7:26

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.