2013-09-24 166 views
0

我在一個有數千行的巨大數據庫中發現了一個錯誤,所以我試圖刪除它們(顯然有一個備份文件)以鎖定問題,並且最終出現問題。我會在情況下提供沒有問題列表中的工作在數據庫中,你要比較:python json數據庫損壞

#Working 
["#saelyth", 8, 40, 4, "000", "000", "0", 11, "!Bot, me lees?", "legionanimenet", 0, "primermensajitodeesapersona"] 

#Not working 
["!anon7002", 545, 3166, 7, "000", "000", "0", 13, "\u2014\u00a1 Hijo! Estas calificaciones merecen una golpiza. \u2014\u00bf Verdad que si mam ...Vamos que yo se donde vive la maestra.", "legionanimenet", 0, "primermensajitodeesapersona"] 

導致此錯誤:

ValueError: Extra data: line 1 column 240 - line 2 column 1 (char 239 - 366) 

我的問題是:什麼是錯的呢?我不知道和所有的努力,以找到什麼是json給我這樣的錯誤的問題是不成功的。

所以我完全刪除該行並嘗試沒有該行加載完整的數據庫,但我現在也得到了新的錯誤:

ValueError: Expecting ',' delimiter: line 1 column 62 (char 61) 

有這麼maaany和maaany和maaany記錄,如:

["tyjyu", 59, 302, 19, "000", "000", "0", 13, "holas", "legionanimenet", 0, "primermensajitodeesapersona"] 
["inuyacha64", 15944, 79401, 3496, "000", "F00", "0", 16, "cuidence chau", "legionanimenet", 2, "primermensajitodeesapersona"] 
["!anon3573", 24, 140, "1", "nada", "nada", "nada", "nada", "nada", "legionanimenet", 0, "primermensajitodeesapersona"] 
["eldiaoscuro", 74, 446, 16, "603", "369", "4", 13, "nada", "legionanimenet", 0, "primermensajitodeesapersona"] 

什麼將是一種有效的方式來找到失蹤,給我那個錯誤?如果可能的話,我想知道如果json獲得了最大數量的項目加載或類似的東西。

編輯 的代碼加載的信息是:

data = [] 
    with open('listas\Estadisticas.txt', 'r+') as f: 
    for line in f: 
     data_line = json.loads(line) 
     if data_line[0] == user.name and data_line[9] == "legionanimenet": 
     data_line[1] = int(data_line[1])+int(palabrasdelafrase) 
     data_line[2] = int(data_line[2])+int(letrasdelafrase) 
     data_line[3] = int(data_line[3])+1 
     data_line[4] = user.nameColor 
     data_line[5] = user.fontColor 
     data_line[6] = user.fontFace 
     data_line[7] = user.fontSize 
     data_line[11] = data_line[8] 
     data_line[8] = message.body 
     data_line[9] = "legionanimenet" 
     data.append(data_line) 
    f.seek(0) 
    f.writelines(["%s\n" % json.dumps(i) for i in data]) 
    f.truncate() 

我希望有人能幫助我這一點。

EDIT2: Python版本3.3.2是IDLE

+0

'print repr(data_line)''在加載之前。可能會給你提示什麼是錯誤的。 – nneonneo

+0

不工作,順便使用python 3.3.2。我應該首先從模塊加載它嗎? – Saelyth

+0

那麼,試試'print(repr(data_line))'。 – nneonneo

回答

0
print(repr(data_line)) 

加載該文件將打印,直到發現錯誤之前。我在此感謝@nneonneo