我可以訪問一組文件(每個大約80-800mb)。不幸的是,每個文件只有一行。該行只包含一個JSON對象(列表的列表)。加載並將其解析爲較小的JSON對象的最佳方式是什麼?在Python中加載大型JSON列表的最佳方式是什麼?
1
A
回答
5
已有類似帖子here。這裏是他們提出的解決方案:
import json
with open('file.json') as infile:
o = json.load(infile)
chunkSize = 1000
for i in xrange(0, len(o), chunkSize):
with open('file_' + str(i//chunkSize) + '.json', 'w') as outfile:
json.dump(o[i:i+chunkSize], outfile)
+1
遇難,這就是python shell所說的 – ashish 2013-07-22 15:48:40
3
如果你想避免加載整個列表到內存中,你可以先處理該文件爲文本:
使用堆棧跟蹤和開放關閉括號/引號。瀏覽任何開門人的字符串,或當前更近的字符串。在掃描文本時,只需查看更接近的文本。當你閱讀開瓶器時推一個,當你找到更近的時候將其彈出。
的JSON的全套是[
- >]
,{
- >}
和"
- >"
。不過你應該排除\"
。您可以在http://www.json.org/
檢查規範然後,每當一個]
遇到和堆棧只有一個項目啪匹配[
後(頂級「[」),那麼你就知道是時候開始新的一行。
最後,您應確保第一個[
和上一個]
不會出現在您的輸出中。
這將爲您提供單獨的列表中的每個項目的JSON對象,每個項目在文件的單獨一行上。
如果您深入瞭解python JSON庫,應該有一些解析JSON的函數。即使它們不是公共接口的一部分,您也可以利用這些功能。
當然,您可以通過使用JSON庫加載字符串,然後逐項(或多個項目)按照其他答案對其進行傾銷來實現相同。
0
模塊pandas 0.21.0
現在支持塊大小作爲read_json
的一部分。您可以加載並在同一時間處理一個塊:
import pandas as pd
chunks = pd.read_json(file, lines=True, chunksize = 100)
for c in chunks:
print(c)
相關問題
- 1. 通過JSON加載ASP.Net usercontrols的最佳方式是什麼?
- 2. 處理大型數據表的最佳方式是什麼?
- 3. 在Android中將大量疊加加載到MapView的最佳方式是什麼?
- 4. 在ASP.NET MVC中加載JavaScript的最佳方式是什麼?
- 5. 等待在QTP中加載幀的最佳方式是什麼?
- 6. 在jQuery Mobile中加載大型嵌套列表的最快方法是什麼?
- 7. 在android下載大文件的最佳方式是什麼?
- 8. 在Python中移動列表的最佳方法是什麼?
- 9. 在Django模型中表示URL的最佳方式是什麼?
- 10. 在列表中組織JPanels的最佳方式是什麼?
- 11. 將大型列表插入SQL數據庫的最佳方式是什麼? [ANDROID]
- 12. 在Android中實現大型表單佈局的最佳方式是什麼?
- 13. 在UITableView單元內加載UITableView的最佳方式是什麼?
- 14. 從巨大的數據列表中生成JSON的最佳方法是什麼?
- 15. 從視圖中添加模型的最佳方式是什麼?
- 16. 在C#中解析大型XML(大小爲1GB)的最佳方式是什麼?
- 17. 在Python中複製字符串列表的最佳方式是什麼?
- 18. 在python中使用默認值做列表[0]的最佳方式是什麼?
- 19. 在Python中將對象轉換爲列表的最佳方式是什麼?
- 20. 優化大型jquery POST的最佳方式是什麼?
- 21. 開始開發大型網站的最佳方式是什麼?
- 22. 構建大型前端項目的最佳方式是什麼?
- 23. 在MySQL的大型表上運行INNER JOIN的最佳方式是什麼?
- 24. 在JSON中循環數組的最佳方式是什麼?
- 25. 在Rails中獲得初始JSON的最佳方式是什麼?
- 26. 什麼是在MySQL中存儲相當大的JSON對象的最佳方式
- 27. 加載正確的PhoneGap文件的最佳方式是什麼
- 28. 什麼是在iPhone上加載大圖片的最快方式?
- 29. 在iPhone上加載大圖的最快方式是什麼?
- 30. 將google maps api加載到angular2的最佳方式是什麼?
我想您已經至少考慮[標準JSON模塊(http://docs.python.org/library/json.html)。 – C2H5OH 2012-04-19 23:42:33
[將95MB JSON數組拆分爲更小的塊?](http://stackoverflow.com/questions/7052947/split-95mb-json-array-into-smaller-chunks) – 2012-04-21 02:49:27
@ C2H5OH - 是的,我是希望不將整個事物加載到內存中。 – 2012-04-23 05:30:23