2013-07-02 52 views
-1

我想執行以下代碼:json.loads()僅解碼與原始字符串字面

str_2_load='{"source":"\u003ca href=\"http:\/\/twitter.com\" \u003eTwitter \u003c\/a\u003e"}' 
json.loads(str_2_load) 

得到以下錯誤:

File "C:\Python27\lib\json\decoder.py", line 381, in raw_decode obj, end = self.scan_once(s, idx) ValueError: Expecting , delimiter: line 1 column 26 (char 25)

但是,如果使用原始字符串字面,它工作正常。 即

str_2_load=r'{"source":"\u003ca href=\"http:\/\/twitter.com\" \u003eTwitter \u003c\/a\u003e"}' 
json.loads(str_2_load) 

由於str_2_load是動態分配的,我期待爲上述問題的解決辦法。

+3

如果它是動態分配的,那麼你應該看不到這個問題。顯示你的真實代碼。 –

回答

0

與替換所有「\」「\\」:

>>> str_2_load='{"source":"\\u003ca href=\\"http:\\/\\/twitter.com\\" \\u003eTwitter \\u003c\\/a\\u003e"}' 
>>> json.loads(str_2_load) 
{u'source': u'<a href="http://twitter.com" >Twitter </a>'} 
+0

更好:使用'r'修飾符,這樣字符串中的所有反斜槓都將按照字面順序進行,然後您不必將它們全部加倍:'str_2_load ='{「source」:r「\ u003ca href = \」http :\/\/twitter.com \「\ u003eTwitter \ u003c \/a \ u003e」}'' – rmunn

+6

有沒有人在這裏讀過這個問題? –

+0

@rmunn絕對,但他似乎很難這樣做 – vroomfondel

相關問題