python - 用 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 在文件中用换行符替换 $ 符号寻求一些建议吗?
解决方案
问题可能存在,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")
推荐阅读
- python - Folium 0.11.0:保持标记层在前面
- python - 为列表中的每个项目随机分配一对而不重复
- javascript - React JS 解析 JSON 中的数据
- docker - 如何从命令提示符执行在 docker 容器内运行的 dotnetcore 项目?
- c# - 多选DataGridView c#
- c++ - 如何将 GLEW 和 GLFW 以及 OpenGL 链接到 MingW 的 g++
- android - Android:对邮件发送的附件进行排序
- python-3.x - psycopg2.ProgrammingError:无效的dsn:无效的连接选项“dBname”
- ruby-on-rails - 如何将包含敏感数据的文件部署到heroku?(带有 Settingslogic gem 的 Rails 项目)
- javascript - 终端错误 - 有人可以解释我应该在哪里寻找错误吗?