2017-03-06 86 views
0

在同一主題上發佈了一些關於此問題的問題,但我的擔憂是另一回事。 我正在嘗試從命令行輸入字典輸入並能夠執行此操作。Python - 以字典(散列輸入)作爲命令行參數

python sentence_scorev1.3.py "working today" "0.6" '[{"ques": "hello who are you", "ans": "I am rishabh", "type": 1},{"ques": "your name", "ans": "I am Ram", "type": 2},{"ques": "Are you working today", "ans": "Yes I am", "type": 4'}]' 

我所採取的輸入並轉換成JSON和使用

json_data = json.loads(input_data) 

其中輸入數據是散列輸入解析它。我擔心的是,當我與傳遞相同的輸入「標點符號一樣哈希輸入看你的」在第二疑問句鍵輸入

'[{"ques": "hello who are you", "ans": "I am rishabh", "type": 1},{"ques": "your' name", "ans": "I am Ram", "type": 2} 

它拋出錯誤的巨蟒一定已經明白它的輸入端但仍然有輸入數據字符串。請讓我知道如何繞過這個。

+0

http://jsonlint.com/ –

+0

@PaulCollingwood,它不是驗證JSON,其關於採取命令行輸入時,「標點符號ID檢測低於實際輸入端更早 –

+0

重點不在於期望用戶輸入格式正確的JSON字符串。如果您使用轉義字符,則可以在命令行中輸入此類字符串。 http://stackoverflow.com/questions/15637429/how-to-escape-double-quotes-in-json –

回答

1

如果你從Unix外殼程序或類似的發射Python的...

標點符號將被解釋爲第三個命令行參數的結束,這與'字,以第一左側開始方括號。 要這樣做,阻止殼,躲避「像這樣一個反斜槓:

'[{"ques": "hello who are you", "ans": "I am rishabh", "type": 1},{"ques": "your\' name", "ans": "I am Ram", "type": 2}]' 

(我試圖在最後添加平衡括號內。)

解析發生之前的Python甚至會命令線參數。

編輯: 最初的命令行包含一個額外的單引號。我想應該是這樣的:

'[{"ques": "hello who are you", "ans": "I am rishabh", "type": 1},{"ques": "your name", "ans": "I am Ram", "type": 2},{"ques": "Are you working today", "ans": "Yes I am", "type": 4}]' 
+0

我使用的是Ubuntu終端來執行,如果我將它作爲轉義傳遞,它會進入命令行執行: > > 並且該腳本不會執行 –

+0

也許您可以編輯您的問題以包含您的句子評分Python腳本? – sjjhsjjh

+0

現在我找到了一種方法。我會在命令行中輸入#而不是'輸入'。而在腳本中,我已經用'替換了'。暫時可以使用但不是正確的方法。在這裏尋找一些真正的技巧 –