转义格式化字符串中的一个键
escaping one of the keys in formatting a string
我试图在运行时生成一个来自对象的动态 ID,并将其插入数据库。
'{"mykey": {value}}'.format(value=obj.id)
但这会出错
KeyError: '"mykey"'
预期结果:
'{"mykey": 4}' # assuming obj.id = 4
我知道我可以使用 json.dumps
,但我不想使用 json 来完成如此简单的任务,因此不得不求助于:'{"mykey": %s}' %(obj.id,)
但我很想知道一种使用 格式 来做到这一点的方法。
你需要escape the {
:
>>> value = 4
>>> '{{"mykey": {value}}}'.format(value=value)
'{"mykey": 4}'
您还可以访问在上下文中传入 obj
的格式模板内的对象属性:
>>> from collections import namedtuple
>>> Object = namedtuple('Object', 'id')
>>> obj = Object(id=4)
>>> obj.id
4
>>> '{{"mykey": {obj.id}}}'.format(obj=obj)
'{"mykey": 4}'
同样适用于 format strings coming up in Python 3.6:
>>> value = 4
>>> f'{{"mykey": {value}}}'
'{"mykey": 4}'
我试图在运行时生成一个来自对象的动态 ID,并将其插入数据库。
'{"mykey": {value}}'.format(value=obj.id)
但这会出错
KeyError: '"mykey"'
预期结果:
'{"mykey": 4}' # assuming obj.id = 4
我知道我可以使用 json.dumps
,但我不想使用 json 来完成如此简单的任务,因此不得不求助于:'{"mykey": %s}' %(obj.id,)
但我很想知道一种使用 格式 来做到这一点的方法。
你需要escape the {
:
>>> value = 4
>>> '{{"mykey": {value}}}'.format(value=value)
'{"mykey": 4}'
您还可以访问在上下文中传入 obj
的格式模板内的对象属性:
>>> from collections import namedtuple
>>> Object = namedtuple('Object', 'id')
>>> obj = Object(id=4)
>>> obj.id
4
>>> '{{"mykey": {obj.id}}}'.format(obj=obj)
'{"mykey": 4}'
同样适用于 format strings coming up in Python 3.6:
>>> value = 4
>>> f'{{"mykey": {value}}}'
'{"mykey": 4}'