在格式字符串中遇到单个'}'

qvtsj1bj  于 2021-06-24  发布在  Mysql
关注(0)|答案(3)|浏览(623)

我有一个usertable,它的“routes”列的值如下 '[{"407": "410"}, {"410": "408"}]' . 我需要选择所有值为408“}的行,所以我在mysql中使用like关键字来实现这一点。查询如下所示:select routes from usertable where routes like '%408"}%' 这个查询在mysql workbench中工作,但当我将其转换为python时,它不工作,我的查询在python中如下所示 (select routes from usertable where routes like “%{1}”}%')。格式(路由)`
我看到的错误如下:

"Single '}' encountered in format string"

我试过使用转义字符,例如。 \" 以及 }} 但仍然得到同样的错误。
请建议如何解决这个问题。
谢谢,西玛

9bfwbjaz

9bfwbjaz1#

'%{1}"}%'.format(routes)' 应该是 '%{1}"}}%'.format(routes)' (注意双精度) }} ).
这就是你能说服别人的方法 format 不是尝试填充一个值,而是只返回一个值 } . 如文件所述:
字符串中花括号外的部分按字面意义处理,除了任何双花括号{{'或}}都被相应的单花括号替换。

vsaztqbk

vsaztqbk2#

尝试使用以下查询

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

您使用的%是转义字符,您可以使用%%for而不是%(类似地,也可以使用%%for而不是{use{{and add\before”)。
这对你有帮助。

fwzugrvs

fwzugrvs3#

你应该复制 } 以及 { 如果你想使用格式。
在您的情况下,编辑字符串,使其看起来像这样 '%{1}"}}%').format(routes) . 这会给你预期的结果。
至于
我试过用转义符
似乎你试图转义的字符,你使用的格式,而不是那些你不想碰。

相关问题