2016-04-27 154 views
1

旧的出错信息包含在双引号期待物业名称: 我得到这个错误:ValueError异常:在Python

ValueError: Expecting property name enclosed in double quotes:

这是我的代码。我想字符串转换ResultPart在字典:

resultPart = '{"sentences": [{"parsetree": [], [("words": "Q", {"Lemma": "q", "NamedEntityTag": "O", "CharacterOffsetEnd": "1", "PartOfSpeech": "NN", "CharacterOffsetBegin": "0"})], "dependencies": [], "text": "Q", "parsetree": [], "indexeddependencies": []}]}' 
resultPart2 = json.dumps(resultPart) 
#result should be a dict 
result = json.loads(resultPart) 

编辑:我纠正了一部分,现在我已经此错误:

TypeError: string indices must be integers

这是新代码:

resultPart = "{'sentences': [{'words': [('Q', {'Lemma': 'q', 'NamedEntityTag': 'O', 'CharacterOffsetEnd': '1', 'PartOfSpeech': 'NN', 'CharacterOffsetBegin': '0'})], 'dependencies': [], 'text': 'Q', 'parsetree': [], 'indexeddependencies': []}]}" 
resultPart2 = json.dumps(resultPart) 
result = json.loads(resultPart2) 
+3

你似乎有一个'('在那里我期望一个''{ 。你为什么手工创建JSON? – jonrsharpe

回答

1

该问题似乎在以下行:

{ 
... 
    "parsetree": [], [ 
    "words": "Q", { 
     "Lemma": "q", 
     "NamedEntityTag": "O", 
     "CharacterOffsetEnd": "1", 
     "PartOfSpeech": "NN", 
     "CharacterOffsetBegin": "0" 
    }], 
... 

} 

[]作为"parsetree"的值后正在寻找另一个key。所以它需要像下面这样是有效的JSON。

{ 
... 
    "parsetree": [], 
    "more_words": [ 
    "words": "Q", { 
     "Lemma": "q", 
     "NamedEntityTag": "O", 
     "CharacterOffsetEnd": "1", 
     "PartOfSpeech": "NN", 
     "CharacterOffsetBegin": "0" 
    }], 
... 

} 
0

这与错误无关,但会有所帮助。

您正在将字符串转储为另一个字符串作为JSON ...这将导致转义字符。

>>> s = '{"dependencies": [], "sentences": [{"parsetree": []}], "text": "Q"}' 
>>> import json 
>>> json.dumps(s) 
'"{\\"dependencies\\": [], \\"sentences\\": [{\\"parsetree\\": []}], \\"text\\": \\"Q\\"}"' 

我非常怀疑这是你想要的。话虽这么说,做一个Python字典,而不是因为:1)它是容易出错少,2)你可以得到正确的JSON

>>> s = {1: 2, 'sentences': [{'parsetree': []}], 'dependencies': [], 'text': "Q"} 
>>> json.dumps(s) 
'{"1": 2, "dependencies": [], "sentences": [{"parsetree": []}], "text": "Q"}'