Как описано в этой статье, How to Import Data in .bson File, у меня есть .bson-файл, который я хотел бы как-то загрузить в Stata.Преобразование bson в json (затем в csv или загрузить json в Stata)
Лучшим сценарием будет создание CSV-файла, но преобразование его в файл .json также будет отличным. Тогда я думаю, что могу использовать insheetjson
в Stata.
Я знаком с 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 или другой программе.
В вашем примере, я уверен, что 'result' будет чисто Python ДИКТ/список. Если это так, вы можете просто использовать стандартную 'json' lib Python для выполнения json.dumps (result)', чтобы иметь допустимую строку JSON или 'json.dump (result)', чтобы сохранить JSON в файл. Я что-то неправильно понял? – lucasnadalutti
Я попытался сделать это и обновил вопрос с результатами. – bill999
Попробуйте заменить 'open (" filepath/games.bson "," r ") как myfile:' with 'with open (" filepath/games.bson "," rb ") в качестве myfile:' – lucasnadalutti