Проблема в том, что elem = elem[:-1]
просто меняет переменную elem
и не меняет ключ словаря.
Как правило, трудно заменить ключ на словарь на месте ... Гораздо проще просто создать новый словарь. Вы можете сделать это с помощью диктовок , таких как:
{key[:-1]: value for key, value in data['features'].items()}
, которые можно заменить в данных JSON на:
data['features'] = {
key[:-1]: value
for key, value in data['features'].items()}
Вы можете сделать немного лучше, вместо того, чтобы вырезать последний символ клавиши, вы можете явно убрать его из косых черт в конце, используя rstrip()
:
data['features'] = {
key.rstrip('/'): value
for key, value in data['features'].items()}
Соберите все вместе:
with open(file, 'r') as f:
data = json.load(f)
data['features'] = {
key.rstrip('/'): value
for key, value in data['features'].items()}
with open(file, 'w') as f:
json.dump(data, f, indent=4, separators=(',', ': '), sort_keys=False)
Обратите внимание, что вам не нужно явно вызывать f.close()
, при открытии файла в диспетчере контекста (как это делает оператор with
) происходит автоматическое закрытие файла после его выхода.