В строке формата встречается одиночный '}

0

У меня есть файл с столбцами "маршруты", который имеет такие значения, как '[{"407": "410"}, {"410": "408"}]'. Мне нужно выбрать все строки, которые имеют значения 408 "}, поэтому я использую для этого ключевое слово как ключевое слово в MySQL. Запрос выглядит следующим образом: выберите маршруты из usertable, где такие маршруты, как '%408"}%'

Этот запрос работает в MySQL Workbench, но когда я беру это, чтобы Python не работал, мой запрос выглядит как ниже в Python (select routes from usertable where routes like "% {1}"}% '). Format (routes)'

Ошибка, которую я вижу, выглядит следующим образом:

    "Single '}' encountered in format string"

Я попытался использовать escape-символы, то есть \" и }} но все равно получаю ту же ошибку.

Пожалуйста, предложите, как это исправить.

Спасибо, Seema

Теги:

3 ответа

1

'%{1}"}%'.format(routes)' должен быть '%{1}"}}%'.format(routes)' (обратите внимание на double }}).

так вы можете конформировать format чтобы не попробовать и не заполнить значение, а вернуть только один }. как указано в документе:

Части строки за пределами фигурных скобок обрабатываются буквально, за исключением того, что любые удвоенные фигурные скобки '{{' или '}}' заменяются соответствующей одной фигурной скобкой.

0

Попробуйте использовать следующий запрос

select routes from usertable where routes like '%%{{\"{1}\"%%'".format(routes))

%, Который вы используете, является escape-символом, вы можете использовать %% вместо % (аналогично вместо { use {{ и add\before ").

Это поможет вам.

0

Вы должны дублировать } и { если вы собираетесь использовать форматирование.

В вашем случае отредактируйте свою строку так, чтобы она выглядела так: '%{1}"}}%').format(routes). Это даст ожидаемые результаты.


Что касается

Я попытался использовать escape-символы

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню