从大型JSON文件中提取价值

时间:2019-07-04 11:44:36

标签: python json

我想从一个大的JSON文件中提取一个“文本”对象,该文件包含大约380k条推文的信息,以便在推文上运行统计信息。 JSON文件比我以前使用的任何文件都要复杂得多,因此我很难确定实现此目的的最佳方法。

我有一个以前使用过的代码,该代码从JSON文件中提取“文本”元素并将其存储在CSV文件中,但是我收到一个错误消息,说存在“额外数据”。这是我的代码:

import json
import csv
import io

data_json = io.open('filename.json', mode='r', encoding='utf-8').read() 
data_python = json.loads(data_json)

csv_out = io.open('text_only.csv', mode='w', encoding='utf-8') #opens csv file

fields = u'text' #field names
csv_out.write(fields)
csv_out.write(u'\n')

for line in data_python:

    row = [ '"' + line.get('text').replace('"','""') + '"']
    row_joined = u','.join(row)
    csv_out.write(row_joined)
    csv_out.write(u'\n')

csv_out.close()

这是我截断(并删除了URL)的JSON文件的(相对)简短摘录,因为只有第三个元素是相关的:

{"contributors": null, "truncated": true, "text": "Best Website To #Sell Your #Music online? Check It Out! (link: (link: URL", "is_quote_status": false, "in_reply_to_status_id": null, "id": 1099558112594399232, "favorite_count": 0, "entities": {"symbols": [], "user_mentions": [], "hashtags": [{"indices": [16, 21], "text": "Sell"}, {"indices": [27, 33], "text": "Music"}], "urls": [{"url": "URL", "indices": [70, 93], "expanded_url": "URL", "display_url": "URL"}, {"url": "URL", "indices": [100, 123], "expanded_url": "URL", .... }}

在该示例中,我想要的只是提取“文本”对象并将其放入文件中,当然,对JSON文件中的每一行都进行重复。非常感谢您的帮助。我仍然是Python和JSON的初学者。

我确保JSON的格式正确(查找两个格式不正确的tweet的工作量很大),但是我上面发布的代码拒绝了该文件。

0 个答案:

没有答案