首页 > 解决方案 > 用 Python 替换 JSON 文件中的字符。由于大文件(超过 1 GB)而导致编辑问题

问题描述

我有一个很大的 JSON 文件(通过 Azure 数据工厂导出)。如果 DataFactory 发现问题,它会在对象之间添加 $ 符号。例如,它看起来像这样:

<br>{...}<br>
{...}<br>
{...}${...}<br>

所以我有一个错误,例如json.decoder.JSONDecodeError: Extra data: line 1 column 21994 (char 21993)

我以一种简单的方式处理它 - notepad++ 将 $ 替换为 \n ,这很好;)但现在我的文件大约为 1.3 GB,而且我没有工具来编辑这么大的文件。

我使用 python 从文件中的所有 JSON 对象中导出数据并将它们导出为 XML。

现在我正在寻找一些解决方案来将所有 $ 符号替换为换行符\n并清理文件。

我的代码的开头是:

a = open('test.json', 'r', encoding = 'UTF8')
data1 = a.readlines()
a.close()

for i in range(len(data1)):
    print('Done%d/%d'%(i,len(data1)))
    jsI = json.loads(data1[i])

如果文件发生在 $ 符号上,它就结束了。

我可以就如何使用 Python 在文件中用换行符替换 $ 符号寻求一些建议吗?

标签: pythonjsonpython-3.x

解决方案


问题可能存在,a.readlines()因为它会将整个文件带到您的记忆中。在处理大文件时,逐行阅读会更有趣,如下所示:

with open(fname) as f: 
    for line in f:
        # Do your magic here, on this loop
# No need to close it, since the `with` will take care of that.

$如果您的目标是用 a替换 every \n,它将是这样的:

with open(fname, "r+") as f: 
    for line in f:
        line.replace("$", "\n")

推荐阅读