2017-03-06 150 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

现在我找到了一种方法。我会在命令行中输入#而不是'输入'。而在脚本中,我已经用'替换了'。暂时可以使用但不是正确的方法。在这里寻找一些真正的技巧 –

相关问题