2016-06-23 3 views
0

런타임에 개체에서 가져온 동적 ID를 생성하여 데이터베이스에 삽입하려고했습니다.문자열 서식 지정시 키 중 하나를 이스케이프 처리합니다.

'{"mykey": {value}}'.format(value=obj.id) 

하지만이 오류를 제공

KeyError: '"mykey"'

예상 된 결과 :

'{"mykey": 4}' # assuming obj.id = 4 

내가 json.dumps을 사용할 수 있습니다 알고 있지만 나는 그런 간단한 작업을 위해 JSON을 사용하지 않으하고 있었다 에 의존하는 것 : '{"mykey": %s}' %(obj.id,)

그러나 나는 t를하는 길을 알고 싶어한다. 형식의입니다.

답변

4

당신은 escape the {해야합니다

>>> 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 간다 :

>>> value = 4 
>>> '{{"mykey": {value}}}'.format(value=value) 
'{"mykey": 4}' 

또한 맥락에서 obj 전달 형식의 템플릿 내부의 개체 속성에 액세스 할 수 있습니다 최대 전환 수 : Python 3.6 :

>>> value = 4 
>>> f'{{"mykey": {value}}}' 
'{"mykey": 4}'