Я извлекаю значение из «текстового» ключа из строки 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
Рекурсия Python вызывается дважды [закрыто] ⇐ Python
Программы на Python
-
Anonymous
1736245027
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)
Подробнее здесь: [url]https://stackoverflow.com/questions/79335471/python-recursion-getting-called-twice[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия