2013-03-19 55 views
0

是否有可能轉換成以下string到字典或json對象:長期複雜的字符串轉換成JSON或字典

{"created_at": "Thu Feb 19 11:28:52 +0000 2009", "description": "Le p\u00f4le de comp\u00e9titivit\u00e9 de la fili\u00e8re des contenus et services num\u00e9riques. http://www.capdigital.com // http://www.facebook.com/capdigitalparisregion ", "favourites_count": 7, "followers_count": 5996, "friends_count": 671, "geo_enabled": true, "id": 21290877, "lang": "en", "listed_count": 344, "location": "Paris", "name": "Cap Digital", "profile_background_color": "920707", "profile_background_tile": true, "profile_image_url": " http://a0.twimg.com/profile_images/2263411541/cap_square_normal.png ", "profile_link_color": "0084B4", "profile_sidebar_fill_color": " http://a0.twimg.com/profile_background_images/157539330/xad3a63c73eff9ba8f89f81e01c10a4d.jpg ", "profile_text_color": "333333", "protected": false, "screen_name": "Cap_Digital", "status": {"created_at": "Mon Mar 18 16:23:05 +0000 2013", "favorited": false, "id": 313687008188956672, "retweet_count": 5, "retweeted": false, "source": "http://clocktweets.com/\" rel=\"nofollow\">Clocktweets", "text": "Plus que quelques jours avant @5Plus_Forum, conf\u00e9rence sur la ville intelligente ! http://t.co/GV5o6fiqUh ", "truncated": false}, "statuses_count": 2121, "time_zone": "Paris", "url": " http://www.capdigital.com ", "utc_offset": 3600}

我試圖json.load()它提供了以下回溯:

Traceback (most recent call last): 
    File "C:\Users\schatterjee\workspace\twittermining\main.py", line 82, in <module> 
    treat_files()  
    File "C:\Users\schatterjee\workspace\twittermining\main.py", line 74, in treat_files 
    d = json.load(row[0]) 
    File "C:\Python27\lib\json\__init__.py", line 274, in load 
    return loads(fp.read(), 
AttributeError: 'str' object has no attribute 'read' 
+0

你應該使用json.loads()來加載字符串。 – alecxe 2013-03-19 09:42:54

回答

3

你應該使用json.loads()(字符串爲s),而不是json.load()

+0

上帝保佑你。像魔術一樣工作 – codious 2013-03-19 09:44:23

0

您可以將字符串轉換爲一個類文件緩衝區第一:

json.load(StringIO.StringIO(your_string)) 
+0

可以使用json.loads代替 – djinn 2013-03-21 03:48:07

1

還有,你提出的修改後的字符串在字符串中的兩個錯誤被正確解析爲JSON

{'created_at': 'Thu Feb 19 11:28:52 +0000 2009', 
'description': 'Le p\\u00f4le de comp\\u00e9titivit\\u00e9 de la fili\\u00e8re des contenus et services num\\u00e9riques. http://www.capdigital.com // http://www.facebook.com/capdigitalparisregion', 
'favourites_count': 7, 
'followers_count': 5996, 
'friends_count': 671, 
'geo_enabled': True, 
'id': 21290877, 
'lang': 'en', 
'listed_count': 344, 
'location': 'Paris', 
'name': 'Cap Digital', 
'profile_background_color': '920707', 
'profile_background_tile': True, 
'profile_image_url': 'http://a0.twimg.com/profile_images/2263411541/cap_square_normal.png', 
'profile_link_color': '0084B4', 
'profile_sidebar_fill_color': 'http://a0.twimg.com/profile_background_images/157539330/xad3a63c73eff9ba8f89f81e01c10a4d.jpg', 
'profile_text_color': '333333', 
'protected': False, 
'screen_name': 'Cap_Digital', 
'status': {'created_at': 'Mon Mar 18 16:23:05 +0000 2013', 
      'favorited': False, 
      'id': 313687008188956672L, 
      rel=\\"nofollow\\">Clocktweets", # here 
      'retweet_count': 5, 
      'retweeted': False, 
      'source': 'http://clocktweets.com/\\', 
      'text': 'Plus que quelques jours avant @5Plus_Forum, conf\\u00e9rence sur la ville intelligente ! http://t.co/GV5o6fiqUh', 
      'truncated': False}, 
'statuses_count': 2121, 
'time_zone': 'Paris', 
'url': 'http://www.capdigital.com', 
'utc_offset': 3600} 
+1

它可以與json.loads一起使用。所以我認爲沒有錯誤。 – codious 2013-03-19 10:01:58

+0

@codious檢查你發佈的字符串,ValueError:Expecting,delimiter:line 1 column 1013(char 1013)' – pradyunsg 2013-03-19 10:16:12

+0

@Schoolboy:如果你將字符串粘貼到你的源代碼中,你需要把它作爲一個raw字符串:'r「」「等等」「」''。 – RichieHindle 2013-03-19 10:44:39