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

Python-将字典(哈希输入)作为命令行参数,python,command-line-arguments,Python,Command Line Arguments,关于这一点,在同一主题上发布了一些问题,但我担心的是其他问题。 我正在尝试从命令行获取字典输入,并且能够做到这一点 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 worki

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

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)
其中,输入数据是散列输入。我担心的是,当我在散列输入中用标点符号传递相同的输入时,比如第二个键输入中的“see your”

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

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

如果您是从Unix shell或类似的程序启动Python

标点符号将被解释为第三个命令行参数的结尾,该参数以第一个方括号左侧的“字符”开头。 要阻止shell执行此操作,请使用如下反斜杠将“”转义:

'[{"ques": "hello who are you", "ans": "I am rishabh", "type": 1},{"ques": "your\' name", "ans": "I am Ram", "type": 2}]'
'[{"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}]'
(我试图在末尾添加平衡括号。)

解析在Python获得命令行参数之前进行

编辑: 原始命令行包含一个额外的单引号。我认为应该是这样的:

'[{"ques": "hello who are you", "ans": "I am rishabh", "type": 1},{"ques": "your\' name", "ans": "I am Ram", "type": 2}]'
'[{"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}]'

@PaulCollingwood,这不是关于验证JSON,而是关于在“标点符号id早于实际输入端”检测到时从命令行获取输入。重点是不要期望用户输入格式良好的JSON字符串。如果使用转义字符,则可以在命令行中输入此类字符串。我正在使用ubuntu终端执行,如果我将其作为escape传递,它将以:>>的形式进入命令行执行,而脚本不执行。您可以编辑您的问题以包含您的句子分数Python脚本吗?现在我找到了一种方法。我将在命令行中输入#,而不是“输入”。在脚本中,我用“替换”。目前,它可以使用,但不是正确的方法。另一种方法是在程序员的文本编辑器中创建JSON,并进行语法检查,然后将其保存为文件,然后读取该文件。