Извлечение множественных вложенных данных из JSON с помощью PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Извлечение множественных вложенных данных из JSON с помощью Python

Сообщение Anonymous »

Я видел еще несколько вопросов по этой теме, но даже в этом конкретном случае мне не удалось решить проблему.
В файле json , я пытаюсь получить определенное целое число из вложенных списков, добавить к нему другое (фиксированное) целое число и записать измененное целое число обратно в файл json.
Целое число, которое я пытаюсь изменить, находится внутри вложенные списки в json, например:
[head]
-->'Список существ'
------->значение [безымянные несколько записей в этом списке, каждая из которых заключена в в паре фигурных скобок]
------------>'FactionID'
------------------- -->'value:'
Я хочу изменить это целое число 'FactionID' (добавив к нему фиксированное целое число) и записать результат обратно в файл json.< /p>
Есть каталог, полный файлов json, в которых я пытаюсь это сделать.
Мой json выглядит так (я сократил его много, но, надеюсь, его еще можно разобрать):

Код: Выделить всё

`{
"__data_type": "GIT ",
"AreaProperties": {
"__struct_id": 100,
"type": "struct",
"value": {
}
},
"Creature List": {
"type": "list",
"value": [
{
"__struct_id": 4,
"Appearance_Type": {
"type": "word",
"value": 242
},
"FactionID": {
"type": "word",
"value": 2
},
}
}
}
Я не могу получить доступ к подразделам в ['Creature List']['value']. Там может быть несколько разных подсписков. Мне кажется, что потенциально существует проблема из-за того, что подсписки в ['Creature List']['value'] не имеют целого числа или строкового имени для идентификации записей? Но я не смогу отредактировать json, чтобы это исправить.
Вот код, с которым я сейчас работаю в целях тестирования:

Код: Выделить всё

  for filename in os.listdir(directory):
if filename.endswith('.git.json'):
file_path = os.path.join(directory, filename)

try:
with open(file_path, 'r') as f:
data = json.load(f)

for key, value in data.items():
if key == 'Creature List' and isinstance(value, dict) and 'value' in value:
for creature in value:
if 'FactionID' in creature:
creature['FactionID']['value'] += 46
print(filename)
print(creature)
print(creature['FactionID']['value']

with open(file_path, 'w') as f:
json.dump(data, f, indent=4)
print(f"Modified {filename}")
except (json.JSONDecodeError, FileNotFoundError) as e:
print(f"Error processing {filename}: {e}")

Я пытался получить целое число «значение» FactionID, используя, например, print(data['Creature List']['value']['FactionID']['value']), но это выдает ошибки.
У меня нет большого опыта работы с Python , любая помощь приветствуется. Спасибо

Подробнее здесь: https://stackoverflow.com/questions/791 ... ing-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»