python - 점프 - 파이썬 rstrip
파이썬 문자열에 리터럴 중괄호 문자를 인쇄하고.format도 사용하려면 어떻게해야합니까? (7)
OP는이 코멘트를 썼다.
I was trying to format a small JSON for some purposes, like this: '{"all": false, "selected": "{}"}'.format(data) to get something like {"all": false, "selected": "1,2"}
JSON을 처리 할 때 "이스케이프 중괄호"문제가 발생하는 것이 일반적입니다.
나는 이렇게하는 것이 좋습니다 :
import json
data = "1,2"
mydict = {"all": "false", "selected": data}
json.dumps(mydict)
대안보다 깨끗합니다.
'{{"all": false, "selected": "{}"}}'.format(data)
json
라이브러리를 사용하는 것은 JSON 문자열이 예제보다 복잡해지면 확실히 바람직합니다.
x = " \{ Hello \} {0} "
print x.format(42)
나에게 준다 : Key Error: Hello\\
출력물을 출력하고 싶습니다 : {Hello} 42
당신은 중괄호를 두 배로하여 그것을 벗어납니다.
예 :
x = "{{ Hello }} {0}"
print x.format(42)
이 시도:
x = "{{ Hello }} {0}"
이 작업을 많이 수행하려는 경우 유틸리티 함수를 정의하여 대신 중괄호 대체를 사용할 수있게하는 것이 좋습니다.
def custom_format(string, brackets, *args, **kwargs):
if len(brackets) != 2:
raise ValueError('Expected two brackets. Got {}.'.format(len(brackets)))
padded = string.replace('{', '{{').replace('}', '}}')
substituted = padded.replace(brackets[0], '{').replace(brackets[1], '}')
formatted = substituted.format(*args, **kwargs)
return formatted
>>> custom_format('{{[cmd]} process 1}', brackets='[]', cmd='firefox.exe')
'{{firefox.exe} process 1}'
이것은 대} 호가 길이가 2 인 스트링 또는 두 스트링의 반복 가능 (복수 문자 분리. 자)으로 작동한다는 점에 유의하십시오.
이유는 {}
는 .format()
의 구문이므로 .format()
은 {Hello}
인식하지 못하므로 오류가 발생했습니다.
이중 중괄호 {{}}를 사용하여 재정의 할 수 있습니다.
x = " {{ Hello }} {0} "
또는
텍스트 서식 지정을 위해 %s
를) 사용해보십시오.
x = " { Hello } %s"
print x%(42)
형식 사전의 매개 변수 사전이나 목록의 키 값을 중괄호로 묶어야하는 경우 다음을 시도하십시오.
>>> "{o}Hello {a}{c}".format(**{"o":"{","c":"}","a":42})
'{Hello 42}'