python json数据库已损坏

时间:2013-09-24 04:54:08

标签: python database 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

1 个答案:

答案 0 :(得分:0)

print(repr(data_line))

在加载文件之前将打印它UNTIL找到错误。我感谢@nneonneo