#json #pandas #parsing #machine-learning #serialization
#json #pandas #синтаксический анализ #машинное обучение #сериализация
Вопрос:
Я использую Python 3, и я попытался с
data = pd.read_json('file.json',encoding="utf-8",orient='records',lines=True)
Но это дает мне:
Ошибка значения: ожидаемый объект или значение
Это структура файла Json, просто краткий пример
{
"_id" : ObjectId("5af1b1fd4f4733eacf11dba9"),
"centralPath" : "XXX2",
"viewStats" : [
{
"totalViews" : NumberInt(3642),
"totalSheets" : NumberInt(393),
"totalSchedules" : NumberInt(427),
"viewsOnSheet" : NumberInt(1949),
"viewsOnSheetWithTemplate" : NumberInt(625),
"schedulesOnSheet" : NumberInt(371),
"unclippedViews" : NumberInt(876),
"createdOn" : ISODate("2017-10-13T18:06:45.291 0000"),
"_id" : ObjectId("59e100b535eeefcc27ee0802")
},
{
"totalViews" : NumberInt(3642),
"totalSheets" : NumberInt(393),
"totalSchedules" : NumberInt(427),
"viewsOnSheet" : NumberInt(1949),
"viewsOnSheetWithTemplate" : NumberInt(625),
"schedulesOnSheet" : NumberInt(371),
"unclippedViews" : NumberInt(876),
"createdOn" : ISODate("2017-10-13T19:11:47.530 0000"),
"_id" : ObjectId("59e10ff3eb0de5740c248df2")
}
]
}
С помощью этого метода я могу видеть данные, но я хотел бы иметь
with open('file.json', 'r') as viewsmc:
data = viewsmc.readlines()
При этом вывод
['{ n',
' "_id" : ObjectId("5af1b1fd4f4733eacf11dba9"), n',
' "centralPath" : "XXX2", n',
' "viewStats" : [n',
' {n',
' "totalViews" : NumberInt(3642), n',
' "totalSheets" : NumberInt(393), n',
' "totalSchedules" : NumberInt(427), n',
' "viewsOnSheet" : NumberInt(1949), n',
' "viewsOnSheetWithTemplate" : NumberInt(625), n',
' "schedulesOnSheet" : NumberInt(371), n',
' "unclippedViews" : NumberInt(876), n',
' "createdOn" : ISODate("2017-10-13T18:06:45.291 0000"), n',
' "_id" : ObjectId("59e100b535eeefcc27ee0802")n',
' }, n',
Я перепробовал все разные методы и решения, представленные в read_json / https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_json.html
и загрузка / loads(str) и т.д., Но ничего.
Ответ №1:
Проблема заключалась в формате файла JSON, который мы тестировали с https://jsonformatter.curiousconcept.com / и измените с помощью регулярного выражения, если у вас есть предложения получше, дайте мне знать.
импорт повторно
with open("views3.json", "r ") as read_file:
data = read_file.read()
x = re.sub("w ((. ))", r'1', data)
print(x)
прочитанный файл.закрыт
Ответ №2:
вы этого хотите?: используйте modul json для чтения file.json
import pandas as pd
import json
with open('file.json') as viewsmc:
data = json.load(viewsmc)
print data #you have a dict
df = pd.DataFrame(data)
print(df)
Комментарии:
1. Большое спасибо, Френчи, я ценю твою помощь, да, я импортирую эти библиотеки, и я также пробовал это, но это не сработало. (Сообщение об ошибке было: Ожидаемое значение: строка 2, столбец 13 (символ 15)) ‘
2. Итак, еще кое-что: на самом деле ваш экспорт не очень хорош (я полагаю, из mongodb), если вы уберете ObjectId, NumberInt и так далее, Все в порядке… ЕСЛИ ваша коллекция mongo не включает NumberInt, а mongoexport создает документ json, который включает NumberInt, это ошибка. вы могли бы проверить свой json здесь
3. Еще раз спасибо, Франчи, как я могу сделать мой файл .json редактируемым для регулярных выражений?