JSON解码字符串 - 未终止字符串

时间:2017-04-24 03:43:32

标签: python json string python-3.x

我有一个2 GB的json文件,当我尝试加载它时,我收到此错误:

  

json.decoder.JSONDecodeError:未终止的字符串,从第1行开始:1093156512(char 1093156511)

所以这意味着可能有一些escape sequence,对吧?(或类似的东西......)搞砸json正确吗?问题是这个文件太大了,只是在编辑器中打开它是一个巨大的痛苦。在我看到问题所在之前,编辑器100%崩溃。但是,我仍然需要以某种方式解决这个问题....我不确定是什么导致了这个问题....它可能是很多东西。

我的数据基本上是一个像这样的对象列表:

data = [{key1: 123, key2:"this is the first string to concatenate"},
 {key1: 131, key2:"this is the second string to concatenate"},
 {key1: 152, key2:"this is the third string to concatenate"} ] 

除了更复杂的key2之外。如果问题是\,如果我摆脱了json文件中的所有\,它会起作用吗?但是,没有什么可以说奇怪的转义字符是我的问题....而且,我对我的输入json文件的控制很少,所以我认为无论如何我都无法改变它。

无论如何在不更改输入json文件的情况下修复此问题?

[编辑] 这是整个错误跟踪:

  

文件“halp.py”,第38行,in      data = json.load(json_file,strict = False)

     

文件“/usr/lib/python3.6/json/init.py”,第299行,载入中      parse_constant = parse_constant,object_pairs_hook = object_pairs_hook,** kw)

     

文件“/usr/lib/python3.6/json/init.py”,第367行,载入中      return cls(** kw).decode(s)

     

文件“/usr/lib/python3.6/json/decoder.py”,第339行,解码      obj,end = self.raw_decode(s,idx = _w(s,0).end())

     

文件“/usr/lib/python3.6/json/decoder.py”,第355行,在raw_decode中      obj,end = self.scan_once(s,idx)   json.decoder.JSONDecodeError:未终止的字符串,从第1行开始:1093156512(char 1093156511)

当我在那里寻求时,我得到了:

eers in the fridge!"}, {"city_name": "Portland", "comments": "A cute space to rest your head in Portland. We just stayed for one night, briefly met Adam who was lovely! Appreciated the beers and coffe

1 个答案:

答案 0 :(得分:-1)

我发现Luminoso的好人写了一个库来解决此类问题。

显然,有时您可能不得不处理来自其他代码的文本。文本通常通过几种不同的软件传递,每种软件都有其自身的怪癖,可能与Microsoft Office在链中的某个位置有关。

这是ftfy进行救援的地方。

from ftfy import fix_text
import json
# text = some text source with a potential unicode problem
fixed_text = fix_text(text)
data = json.loads(fixed_text)