2016-10-07 32 views
0

我解析我的json字符串文件到python並總是返回錯誤。 我用網上的JSON格式和驗證,所以我想這也返回了錯誤的幫助,使我的JSON正確的,並告訴我錯誤在數組中的json數組返回錯誤嗎?壞的字符串

[{ 
    "sentence_id": "TR.00001", 
    "sentence": { 

     "text": "Bill was born 1986.", 
     "annotation": { 
      (1, "Bill", "bill", "NNP", "B-PERSON"), 
      (2, "was", "be", "VBD", "O"), 
      (3, "born", "bear", "VBN", "O"), 
      (4, "1986", "BIL", "CD", "B-DATE"), 
      (5, ".", ".", ".", "O"), 

     }, 
     "relations": { 
      "subject": "bill", 
      "predicate": "DATE of Birth", 
      "object": "1986" 
     } 
    } 
}, ] 

上面是我的JSON字符串,你可以在網上查詢驗證或在線JSON格式校驗這裏返回錯誤

"annotation": { 
    (1, "Bill", "bill", "NNP", "B-PERSON"), 
    (2, "was", "be", "VBD", "O"), 
    (3, "born", "bear", "VBN", "O"), 
    (4, "1986", "BIL", "CD", "B-DATE"), 
    (5, ".", ".", ".", "O"), 
}, 

JSON的一部分,所以可以請你幫我在使用JSON數組中整理出陣列的麻煩,你可以使用這些編輯器鏈接link to json editor

在第8行

+0

這不是一個有效的JSON。如果字符串有模式,你可以實現一些邏輯來將字符串轉換爲json。 –

+0

我真的不知道我使用python並且必須通過json文件以上是training.json文件中的json –

+0

您的** json **無效,請查看[here](http://json.org /)來獲得更多關於正確的** json **格式的信息。 – hassan

回答

1

你的JSON字符串的文件是不恰當它有一些錯誤...

  1. 你錯過了在註解的關鍵。
  2. 你的值必須在大括號中,因爲它是一個數組。
  3. 最後加上逗號。

    [ 
        { 
        "sentence_id" : "TR.00001", 
        "sentence" : { 
    
          "text" : "Bill was born 1986.", 
          "annotation":{ 
              "1": [1,"Bill" , "bill" , "NNP" ,"B-PERSON"], 
              "2":[2, "was" , "be" , "VBD" , "O"], 
              "3": [3 , "born" , "bear" , "VBN", "O"], 
              "4":[4, "1986" , "BIL" , "CD" , "B-DATE"], 
              "5":[5, "." , "." , ".","O"] 
              }, 
          "relations":{ 
              "subject":"bill", 
              "predicate":"DATE of Birth", 
              "object":"1986" 
             } 
          } 
    } 
    ] 
    

這意味着您的註釋部分必須是這樣的:

"annotation":{ 
       "1": [1,"Bill" , "bill" , "NNP" ,"B-PERSON"], 
       "2":[2, "was" , "be" , "VBD" , "O"], 
       "3": [3 , "born" , "bear" , "VBN", "O"], 
       "4":[4, "1986" , "BIL" , "CD" , "B-DATE"], 
       "5":[5, "." , "." , ".","O"] 
      }, 
+0

它不接受這個'print data [0] [「relations」]'這就是爲什麼再次標記錯誤 –

+0

它使用像這樣打印'data [0] [「sentence」] [「relations」]' –

2

JSON不明白的元組期望屬性名,錯誤,請嘗試更改到列表:

"annotation": [ 
    [1, "Bill", "bill", "NNP", "B-PERSON"], 
    [2, "was", "be", "VBD", "O"], 
    [3, "born", "bear", "VBN", "O"], 
    [4, "1986", "BIL", "CD", "B-DATE"], 
    [5, ".", ".", ".", "O"] 
] 

你可以做tuple(list)轉換回元組的另一端。

另外,您在[5, ".", ".", ".", "O"]上有一個額外的逗號,我將其刪除。