Рекурсия Python вызывается дважды [закрыто]Python

Программы на Python
Ответить
Anonymous
 Рекурсия Python вызывается дважды [закрыто]

Сообщение Anonymous »

Я извлекаю значение из «текстового» ключа из строки json, но вижу, что вызов рекурсии происходит дважды и выводит результат 2 раза. Добавлено несколько операторов печати для целей отладки.
Нужна помощь в отладке методаprocess_data, где вызов повторяется дважды.
def process_data(obj, content):
# texts = []
print("inside process data", obj)
if isinstance(obj, dict):
for key, value in obj.items():
print("key",key)
if key == "textValue":
print("processing textValue")
textval_str = json.dumps(value)
textval = json.loads(textval_str)
print("textVal", textval)
process_data(textval, content)
if key == "text":
print("processing text", value)
content.append(value)
return
else:
process_data(value, content)
elif isinstance(obj, list):
print("list")
for item in obj:
process_data(item, content)
return content

def from_adf(x):
try:
if x is not None:
cont = []
adf_text = process_data(x, cont)
print(len(cont))
return adf_text
else:
return None
except Exception as e:
print(e)
return x

if __name__ == '__main__':
print(1)
json_str = '''{"textValue": "{\"type\":null,\"content\":[{\"content\":[{\"type\":\"text\",\"text\":\"PAAT \"}]}]}"}'''
op = json_str.replace('"{', '{').replace('}"', '}').replace('\\"', '\\\\\\"')
opls = json.loads(op, strict=False)
output = from_adf(opls)
print(output)


Подробнее здесь: https://stackoverflow.com/questions/793 ... lled-twice
Ответить

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

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

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

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

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