我有一个 2 GB 的 json 文件,当我尝试加载它时出现此错误:
json.decoder.JSONDecodeError:未终止的字符串开始于:第 1 行第 1093156512 列(字符 1093156511)
所以这意味着可能有一些 转义序列,对吗?(或类似的东西..)弄乱了 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 文件的情况下解决这个问题?
[编辑] 这是整个错误跟踪:
data = json.load(json_file,strict=False) 中的文件“halp.py”,第 38 行
文件“/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 行,加载返回 cls(**kw).decode(s)
文件“/usr/lib/python3.6/json/decoder.py”,第 339 行,在 decode 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: Unterminated string starting at: line 1 column 1093156512 (字符 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
原文由 ocean800 发布,翻译遵循 CC BY-SA 4.0 许可协议
我发现 Luminoso 的好人写了一个库来解决这类问题。
显然, 有时您可能不得不处理来自其他代码的文本。文本经常通过几个不同的软件,每个都有自己的怪癖,可能在链中的某个地方有 Microsoft Office。
这就是 ftfy 来救援的地方。