2017-06-23 2 views
0

(2.7を使用して)Pythonで次のことを想像引用されていないPythonやJSON辞書に文字列を変換:=そのキー

のmyString '{キー: "値"}'

の "値" を単純な文字列、リスト、ブール値、または別の辞書になります。それぞれ実際には二重引用符で囲まれています

これをPython辞書またはjsonに変換しようとすると、元の文字列のキー引用されていません。例えば

  • をast.literal_eval(のmyString)で結果:IndentationError:予期しないインデント又はとValueError:(のmyStringの複雑さに応じて)、不正な形式の文字列
  • 評価(のmyString)結果:NameError:name 'AbsolutePath'が定義されていません
  • json.loads(myString)結果:ValueError:二重引用符で囲まれたプロパティ名が必要です。

効果的には、この文字列をJavaScriptのvar宣言から取得していますが、その文字列はページから削り取られています。 myStringは、50〜100のエントリを持つ辞書を格納することができます。

キーが引用符で囲まれておらず、値が同じであるとは限りません。

+0

インポートAST インポートJSON のmyString =「{キーループによって-ed strip()ことができる適用: "値" は、このような } ' print(eval(myString)) print(json.loads(myString)) – NAs

+0

[生のJavaScriptオブジェクトをPython辞書に変換するにはどうすればいいですか?](https://stackoverflow.com/questions/24027589/how-to-convert-raw-javascript-object-to-python-dictionary) –

+0

文字列にリバースJavascriptコードを引っ張っているだけですか?私はあなたがjavascriptを変更することができれば、JSON.stringifyと[demjson](http://deron.meranda.us/python/demjson/docs)のようなものを使ってデコードすることができます。 –

答えて

0

最初にキーが引用符なしであることが確かな場合は、文字列に引用符を手動で追加するだけですか?

modified_strings_list=[]  
for string in string_list: 
    string = string.replace('{','{"', 1) 
    string = string.replace(':','":', 1) 
    modified_strings_list.append(string) 

そしてeval()

任意の空白は、次に簡単dict.keys()

+0

私の例は1つのエントリしか持たないかもしれませんが、私は50+を持つことができます。 ":"を ";"に置き換える一方の側で動作し、他方の側は固定された文字列の置換ではありません – NAs

+0

multientryの例を挙げることができますか? –

関連する問題