【问题标题】:Producing seperate text files from a large Json file从大型 Json 文件生成单独的文本文件
【发布时间】:2019-12-16 19:35:36
【问题描述】:

我正在尝试使用下面的代码从一个大型 .json 文件生成一组 .txt 文件,其中每行有一个 Json 对象,带有日期和一串文本。我希望日期是文件名。

当我打开 .json 文件(在 sublime 文本编辑器中)时,它显示了 2272 行,所以我假设代码应该生成这个数量的文本文件。然而,它的产量只有一半。谁能告诉我为什么,我应该怎么做才能纠正这个问题?

import json

#with open('results.json') as json_file:
data = [json.loads(line) for line in open('results.json', 'r')]
for p in data:
    date = p["date"]
    filename = date.replace(" ", "_").replace(":","_")
    print(filename)
    text = p["text"]
    with open('Articles2/'+filename+'.txt', 'w') as f:
        f.write(text+'\n')

感谢您的帮助!

【问题讨论】:

标签: python json text


【解决方案1】:

您的示例数据中有重复的日期,因此 for 循环的每次迭代都会创建一个新条目,然后覆盖日期完全相同的条目。

例如:2018-11-17 17:11:48 在您的数据中大约 13 行有 3 个条目。这只会创建 1 个新文件,因为脚本中的新文件创建条件仅基于 date 数据。

您需要在日期中添加一些其他唯一值以使其唯一,以便open() 不会覆盖已存在的文件。 IE。将毫秒添加到您的日期,从 JSON 对象中的“文本”属性连接值,添加计数器等。

【讨论】:

  • 谢谢!我没有发现。我将尝试在数据中添加一个源 url 列,这样我就可以弄清楚为什么我会得到重复的日期,可能是每个日期/时间有不止一篇文章,或者几个 url 点产生相同的文章。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多