2013-05-01 115 views
0

我有以下字符串,我從Twitter收集流API麻煩經過串JSON蟒蛇字典

"""{"created_at":"Mon Mar 11 20:15:36 +0000 2013","id":311208808837951488,"id_str":"311208808837951488","text":"ALIENS ENTRATE E' IMPORTANTE!!! \n\n\n\nMTV's Musical March Madness ritorna il 18 marzo...Siete pronti A http:\/\/t.co\/ABXEfquTJw via @Hopee_dream","source":"\u003ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for Android\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_reply_to_screen_name":null,"user":{"id":1025970793,"id_str":"1025970793","name":"Tom's Perfection\u2665","screen_name":"_MyGreenEyes_","location":"","url":null,"description":"Angel,don't you cry,i'll meet you on the other side.\u2661","protected":false,"followers_count":387,"friends_count":520,"listed_count":1,"created_at":"Fri Dec 21 08:39:17 +0000 2012","favourites_count":174,"utc_offset":null,"time_zone":null,"geo_enabled":true,"verified":false,"statuses_count":772,"lang":"it","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/3363059730\/3d791e51eefa800150cd99917abc1d2c_normal.jpeg","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/3363059730\/3d791e51eefa800150cd99917abc1d2c_normal.jpeg","profile_banner_url":"https:\/\/si0.twimg.com\/profile_banners\/1025970793\/1362500832","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"entities":{"hashtags":[],"urls":[{"url":"http:\/\/t.co\/ABXEfquTJw","expanded_url":"http:\/\/tl.gd\/l9f5j7","display_url":"tl.gd\/l9f5j7","indices":[101,123]}],"user_mentions":[]},"favorited":false,"retweeted":false,"possibly_sensitive":false,"filter_level":"medium"}""" 

我做以下操作:

import json 
json_string = json_string.strip() 
jsn_dict = json.loads(json_string) 
print jsn_dict["text"] 

給出:

ALIENS ENTRATE E' IMPORTANTE!!! 

而不是:

"ALIENS ENTRATE E' IMPORTANTE!!! \n\n\n\nMTV's Musical March Madness ritorna il 18 marzo...Siete pronti A http:\/\/t.co\/ABXEfquTJw via @Hopee_dream" 

在我看來,新行字符正在創建解析這個字符串到python字典的問題。

但後來我在做json_string.strip()操作。我以爲它會從我的字符串中刪除這些東西..

我在做什麼錯?

+0

我找不到任何方式複製本行爲,使用Python 2.7或3.3。如果我使用三引號字符串編寫'json_string =「」「...」「」',那麼'loads'將失敗,因爲在JSON sring中有一個字面換行符是非法的。但是,如果我編寫'json_string = r「」「」...「」「',它可以正常工作,並打印出您想要的輸出。當然,它會在中間打印一串換行符,但它不會截斷字符串。我嘗試了所有我能想到的2.7和3.3中的其他變體,並且他們都沒有你描述的問題。你能展示一些實際的代碼嗎? – abarnert 2013-05-02 00:17:50

回答

2

str.strip()方法僅刪除字符串開頭和結尾的空格字符。中間沒有任何地方。

要刪除字符串中的所有換行符,你可以這樣做:

"some\n\n\nstring".replace("\n", "") 

"some\n\n\nstring".translate(None, "\n") 

第一個是可能更容易閱讀和理解。

+0

它仍然沒有解決手頭的問題??怎麼樣多個「\ n \ n \ n」杵在一起? – Fraz 2013-05-01 23:31:14

+0

@Fraz測試它,它應該工作。即使有一堆聚集在一起,所有這樣的情況將被刪除。 – Anorov 2013-05-01 23:33:09

1

我遇到了類似的問題,文字在\n符號後被截斷。

在我的情況下,這個問題是因爲我不小心在前面加上符號#對我用拉值從字典的關鍵:

print jsn_dict['#text']