Как правильно отформатировать query string внутри json?

Почему при попытке выполнить данное форматирование:
model = 3232323
text =  '{"req":[{"index":"prod","param":"q=%s&hits=4&filters=live%3A1"}]}' % (model)


ошибка:
TypeError: not enough arguments for format string
  • Вопрос задан
  • 156 просмотров
Решения вопроса 1
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Это какой-то кошмар.
Никогда нельзя ковыряться руками в специализированных форматах.
А надо использовать только предназначенные для этого инструменты. Тем более что это не так сложно.
В данном случае надо
  • аккуратно распаковать json
  • вытащить из него и аккуратно распаковать query string
  • поменять значение на нужное
  • аккуратно запаковать query string
  • аккуратно запаковать json
  • и никаких f-strings!
from urllib import parse
import json

text =  '{"req":[{"index":"prod","param":"q=%s&hits=4&filters=live%3A1"}]}'
arr = json.loads(text)
qs = parse.parse_qs(arr['req'][0]['param'])
qs['q'] = model
arr['req'][0]['param'] = parse.urlencode(qs,doseq=True)
text = json.dumps(arr)

При таком подходе конечный результат всегда будет отформатирован правильно, и программа не будет падать на ровном месте.

spoiler
Такое ощущение, что Питон - это новый пэхапе. 10 лет назад на пыхе точно также колупали чем попало, лишь бы заработало здесь и сейчас. И теперь тоже самое в питоне начинается
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы