2017-08-11 32 views
1

我有一個很長的字符串我想使用json.loads()並不能這樣做,因爲從我的理解json只接受雙引號,因爲這個字符串的長度,它是自動分解以適合單引號的新行。無論如何要防止這一點?字符串被自動分割爲單引號

以下示例在Python 2.7

string = "a long string' \ 
     'still going" 

json.loads(string) 

Invalid control character fails at char # 

我知道這工作,如果它是所有雙引號或單引號,但是當我使用單引號json.loads(串)是不承認它。

編輯:

單引號的字符串是從一個插座進來的時候,我沒有在該控件。他們採用一個單引號字符串,並在兩端放置雙引號,以便它與json.loads方法一致。然而,打破長字符串的單引號仍然存在並導致問題

這也不是所有json的數據,只是單個值之一。

+1

你爲什麼試圖調用'json.loads'數據呢?它不包含有效的JSON。不過你可以這樣做:'a = json.loads(''一個字符串'')' –

回答

0

中庸之道與+更換您簡單報價:

string = "a long string"+ \ 
    "still going" 

json.loads(string) 
0

我假設你想在第一線爲key,第二個作爲value。 我假設只有兩行'刪除器作爲分隔符。

代碼:

import json 

string = "a long string' \ 
     'still going" 

print json.dumps(dict([string.splitlines()[0].split('\'   \'')])) 

輸出:

>> {"a long string": "still going"} 
0

首先關閉所有,在JSON字符串是只有"your string"。如果您在JSON中使用單引號而不是雙引號,則會導致JSON無效。

順便說一句,你的字符串應該像

string = "\"My awesome string" \ 
    "it ends right there\"" 

string = '"My awesome string' \ 
    'it ends right there"' 

string = (
    '"My awesome string' 
    'it ends right there"' 
) 
0

好吧,我想通了。單引號將我的字符串拆分爲新行並不重要,因爲我在收到它之後用雙引號將它包圍。事實證明,當我收到它時,它正在向完成的json支架添加一個\ n。我不知道爲什麼這\ n是有的,但我有一個簡單的.replace(「\ n」,「」)刪除它

我只想澄清串進來的是

string = 'string' 

放它在我做的json

'{"json key :", "'+string+'"}'