正如本文How to Import Data in .bson File所述,我有一个.bson文件,我想以某种方式加载到Stata中。
最好的情况是创建.csv文件,但将其转换为.json文件也会很棒。然后我想我可以在Stata中使用insheetjson
。
我熟悉python并找到了这篇文章MongoDB: BSON to JSON。答案说,可以使用simplejson
包和此代码将bson转换为json:
result = db.mycol.find({ ....})
json = simplejson.dumps(result)
我怎样才能让它发挥作用?我不知道如何将bson文件加载到python中(我认为是db
对象是什么)。我也不知道括号({ ....})
应该怎么做。有什么建议?同样,另一个将.bson数据转换为.csv或.json的简单方法也是受欢迎的。
***更新
将评论纳入建议,我做了以下事情:
with open("filepath/games.bson", "r") as myfile:
data = myfile.read()
#note that we need to change to unicode because of errors with some characters
data2 = unicode(data, errors='ignore')
with open('filepath/games.json', 'w') as data_file:
json.dump(data2, data_file)
但在data
和data2
中,我得到的结果如下:
\x00\x02fg_pct\x00\x05\x00\x00\x00.273\x00\x10fga\x00\x0b\x00\x00\x00\x10ft\x00\x01\x00\x00\x00\x02ft_pct\x00\x05\x00\x00\x00.500\x00\x10fta\x00\x02\x00\x00\x00\x02mp\x00\x06\x00\x00\x0021:00\x00\x10orb\x00\x01\x00\x00\x00\x10pf\x00\x02\x00\x00\x00\x02player\x00\x0b\x00\x00\x00Juan Dixon\x00\x10plus_minus\x00\xee\xff\xff\xff\x10pts\x00\x08\x00\x00\x00\x10stl\x00\x01\x00\x00\x00\x10tov\x00\x01\x00\x00\x00\x10trb\x00\x02\x00\x00\x00\x00\x037\x00\xf7\x00\x00\x00\x10ast\x00\x02\x00\x00\x00\x10blk\x00\x00\x00\x00\x00\x10drb\x00\x02\x00\x00\x00\x10fg\x00\x00\x00\x00\x00\x10fg3\x00\x00\x00\x00\x00\x02fg3_pct\x00\x05\x00\x00\x00.000\x00\x10fg3a\x00\x03\x00\x00\x00\x02fg_pct\x00\x05\x00\x00\x00.000\x00\x10fga\x00\x05\x00\x00\x00\x10ft\x00\x02\x00\x00\x00\x02ft_pct\x00\x05\x00\x00\x00.500\x00\x10fta\x00\x04\x00\x00\x00\x02mp\x00\x06\x00\x00\x0020:00\x00\x10orb\x00\x00\x00\x00\x00\x10pf\x00\x02\x00\x00\x00\x02player
这似乎不是我想要的。如果是,我不知道如何在Stata或其他程序中打开它。
答案 0 :(得分:0)
试试这个:
import bson
with open('filepath/games.bson','rb') as f:
data = bson.decode_all(f.read())