#python #json #parsing
#python #json #синтаксический анализ
Вопрос:
Попытка разобрать многострочный, несколько объектов json, разделенных запятой в Python. Однако в любом из режимов либо json.при загрузке или в виде списка, или в виде объекта jsonlines не удается проанализировать данные.
Ввод: это присутствует в одном файле следующим образом
{
"0": "mdm-898040540420",
"1": {
"dchannel": "FR al"
},
"2": {
"dchannel": "FR Website"
},
"3": {
"dcountry": "BDF"
}
},
{
"0": "mdm-846290540037",
"1": {
"dchannel": "FR alk"
},
"2": {
"dchannel": "FR Website"
},
"3": {
"dcountry": "BDF"
}
},......
И так далее, это похоже на множество небольших объектов json в файле.
Пытался заключить весь файл с помощью [] типа — [{json1},{json2} …] и использовать
with open("C:\Users\viv\Downloads\2020_11_21-10_31_03_PM_v2.json", 'r') as f:
object_list = []
for line in f.readlines():
object_list.append(json.loads(line))
И без использования []., заключенный целиком в {} и используемую библиотеку json. Каким бы ни был метод, он не сможет выполнить синтаксический анализ.
Любой метод для его анализа был бы высоко оценен. Я хочу создать csv в качестве выходных данных, где :
id dchannel dcountry
mdm-846290540037,"FR al, FR Website", BDF
Сообщения об ошибках :
1. While trying
df = pd.read_json("C:\Users\viv\Downloads\2020_11_21-10_31_03_PM_v2.json", lines=True)
df.head()
self._parse_no_numpy()
File "D:workspaceBillingDashboardvenvlibsite-packagespandasiojson_json.py", line 1093, in _parse_no_numpy
loads(json, precise_float=self.precise_float), dtype=None
ValueError: Expected object or value
2. while running :
entitiesList = []
print("Started Reading JSON file which contains multiple JSON document")
with open("C:\Users\viv\Downloads\edited_file_b.json",'r') as f:
for jsonObj in f:
entitiesDict = json.loads(jsonObj)
entitiesList.append(entitiesDict)
File "D:/workspace/BillingDashboard/bsdf_json_csv_converter.py", line 12, in <module>
entitiesDict = json.loads(jsonObj)
File "C:python37libjson__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "C:python37libjsondecoder.py", line 337, in decode
Started Reading JSON file which contains multiple JSON document
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:python37libjsondecoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 2)
Process finished with exit code 1
Комментарии:
1. Не могли бы вы показать сообщения об ошибках?
2. Добавлены ошибки, @PIG208
Ответ №1:
Проблема может быть связана с форматом данных json.
Например, если исходный json выглядит следующим образом:
{"0": "mdm-898040540420",
"1": {
"dchannel": "FR al"
},
"2": {
"dchannel": "FR Website"
},
"3": {
"dcountry": "BDF"
}
},
{
"0": "mdm-846290540037",
"1": {
"dchannel": "FR alk"
},
"2": {
"dchannel": "FR Website"
},
"3": {
"dcountry": "BDF"
}
}
Вы могли бы попытаться окружить его {"test": []}
и проанализировать его с json.loads(text)
помощью (я чувствую, что анализатор не имеет большого значения в вашем случае).
{"test":
[{"0": "mdm-898040540420",
"1": {
"dchannel": "FR al"
},
"2": {
"dchannel": "FR Website"
},
"3": {
"dcountry": "BDF"
}
},
{
"0": "mdm-846290540037",
"1": {
"dchannel": "FR alk"
},
"2": {
"dchannel": "FR Website"
},
"3": {
"dcountry": "BDF"
}
}]
}
Должно работать следующее:
with open('./jsonpath.json', 'r') as f:
data = json.loads(f.read())
print(data)
Комментарии:
1. self._parse_no_numpy() Файл «D:workspaceBillingDashboardvenvlibsite-packagespandasiojson_json.py «, строка 1093, в _parse_no_numpy загружается (json, precise_float=self.precise_float), dtype=None Ошибка значения: ожидаемый объект или значение
Ответ №2:
Почему бы вам не попробовать с pandas?
from pandas import read_json
df = read_json("C:\Users\viv\Downloads\2020_11_21-10_31_03_PM_v2.json")
df.to_csv('save_path/file_name.csv')
Попробуйте использовать разные значения в параметре orient для read_json.
Комментарии:
1. read_json тоже пытался, он выдает мне ту же ошибку — ошибка синтаксического анализа json
2. Покажите нам ошибку, иначе мы не будем знать, как действовать дальше.
3. self._parse_no_numpy() Файл «D:workspaceBillingDashboardvenvlibsite-packagespandasiojson_json.py «, строка 1093, в _parse_no_numpy загружается (json, precise_float=self.precise_float), dtype=None Ошибка значения: ожидаемый объект или значение