Python - 将字典(哈希输入)作为命令行参数

时间:2017-03-06 08:33:10

标签: python command-line-arguments command-line-parsing

关于这个问题,在同一主题上发布了一些问题,但我关注的是其他问题。 我试图从命令行获取字典输入并且能够做到。

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}

它抛出错误,因为python必须将其理解为输入结束但仍然有输入数据字符串。请让我知道如何绕过这个。

1 个答案:

答案 0 :(得分:1)

如果你从Unix shell或类似的东西启动Python ......

标点符号将被解释为第三个命令行参数的结尾,该参数以'开头。第一个方括号左侧的字符。 为了阻止shell做到这一点,逃避'用这样的反斜杠:

'[{"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}]'