我想从一个大的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的工作量很大),但是我上面发布的代码拒绝了该文件。