Замена различных вхождений строки с меняющейся


Мне нужно разобрать поврежденных JSON-строку, в которой я нахожу много повторений один и тот же ключ, как в следующем фрагменте:

[...]
"term" : {"Entry" : "value1", [.. other data ..]},
"term" : {"Entry" : "value2", [.. other data ..]},
[...]

Я думал о присоединении суффикса к каждому ключу, и я делаю это с помощью следующего кода:

word = "term"
offending_string = '"term" : {"Entry"'
replacing_string_template = '"%s_d" : {"Entry"'

counter = 0
index = 0
while index != -1:
    # result is the string containing the JSON data
    index = result.find(offending_string, index)
    result = result.replace(offending_string,
                replacing_string_template % (word, counter), 1)
    counter += 1

Это работает, но я хотел бы знать, если это хороший подход, и если вы могли бы сделать это иначе.



258
5
задан 24 февраля 2011 в 01:02 Источник Поделиться
Комментарии
1 ответ

import json

def fixup(pairs):
return pairs

decoded = json.loads(bad_json, object_pairs_hook = fixup)

object_pairs_hook является более недавнее дополнение. Если у вас старая версия Python вы не можете иметь это. Полученный объект Python будет содержать списки пар (в том числе дубликатов), а не словари.

4
ответ дан 24 февраля 2011 в 05:02 Источник Поделиться