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}'

Python 3.6 이상 (2017)

최신 버전의 Python에서는 f-strings ( PEP498 참조)를 사용합니다.

f-strings를 사용하면 double {{ or }} 사용해야합니다.

n = 42  
print(f" {{Hello}} {n} ")

원하는 것을 생산하다

 {Hello} 42

리터럴 텍스트를 사용하는 대신 괄호 안의 표현식을 해결해야하는 경우 세 세트의 대괄호가 필요합니다.

hello = "HELLO"
print(f"{{{hello.lower()}}}")

생산하다

{hello}




curly-braces