2017-03-06 7 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'}]' 

Iは入力を取り、JSONにそれを変換し、入力データがハッシュ入力である

json_data = json.loads(input_data) 

使用して解析しました。私は2番目QUESキー入力で「のようなハッシュ入力に句読点あなたを参照してください」と同じ入力を渡すとき、私の懸念はある

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

Pythonは入力の終わりとして、それを理解している必要がありますとしてそれがエラーをスローしますそれでも私は入力データ文字列を持っていた。これをバイパスする方法を教えてください。

+0

http://jsonlint.com/ –

+0

@PaulCollingwood、そのない句読点idは、実際の入力端よりも先に検出したとき「JSON、そのコマンドラインから入力を取っについての検証について:私は、それはこのようにすべきだと思います –

+0

あなたのユーザーが整形式のJSON文字列を入力するとは限りません。エスケープ文字を使用する場合は、コマンドラインでそのような文字列を入力できます。 http://stackoverflow.com/questions/15637429/how-to-escape-double-quotes-in-json –

答えて

1

あなたがUnixシェルまたは類似からのPythonを起動している場合...

句読点は、最初の左に '文字で始まる3番目のコマンドライン引数の終わり、と解釈されます

角かっこ。 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}]' 
+0

私は実行するためにubuntuターミナルを使用しています。私がエスケープとして渡すと、コマンドライン実行に入ります: > > とスクリプトで実行されない –

+0

あなたの文章スコアPythonスクリプトを含むように質問を編集できますか? – sjjhsjjh

+0

今のところ私は方法を見つけました。私はコマンドラインに 'を入力する代わりに#を入力します。そして、スクリプトで私は#で置き換えました。しばらくの間、それは使用することができますが、正しいアプローチではありません。本物のトリックを探してください –

関連する問題