[python] 파이썬 문자열에 리터럴 중괄호 문자를 인쇄하고 .format을 어떻게 사용할 수 있습니까?

x = " \{ Hello \} {0} "
print(x.format(42))

나에게 준다 : Key Error: Hello\\

출력을 인쇄하고 싶습니다. {Hello} 42



답변

{{and 를 두 배로 늘려야합니다 }}.

>>> x = " {{ Hello }} {0} "
>>> print(x.format(42))
' { Hello } 42 '

형식 문자열 구문에 대한 Python 설명서 의 관련 부분은 다음과 같습니다 .

형식 문자열에는 중괄호로 묶인“대체 필드”가 포함됩니다 {}. 중괄호에 포함되지 않은 것은 리터럴 텍스트로 간주되며 변경되지 않은 채 출력으로 복사됩니다. 리터럴 텍스트에 중괄호 문자를 포함해야하는 경우 : {{및 을 두 번 사용하여 이스케이프 처리 할 수 ​​있습니다 }}.


답변

중괄호를 두 배로 늘려서 탈출하십시오.

예 :

x = "{{ Hello }} {0}"
print(x.format(42))


답변

파이썬 3.6 이상 (2017)

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

f-string을 사용하면 double {{또는}}

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

원하는 생산

 {Hello} 42

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

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

생산

{hello}


답변

OP는이 의견을 썼습니다.

나는 작은 JSON을 '{"all": false, "selected": "{}"}'.format(data)다음과 같은 목적으로 포맷하려고했습니다.{"all": false, "selected": "1,2"}

JSON을 다룰 때 “이스케이프 괄호”문제가 발생하는 것이 일반적입니다.

나는 이것을하는 것이 좋습니다.

import json
data = "1,2"
mydict = {"all": "false", "selected": data}
json.dumps(mydict)

대안보다 깨끗합니다.

'{{"all": false, "selected": "{}"}}'.format(data)

jsonJSON 문자열이 예제보다 복잡해지면 라이브러리를 사용하는 것이 좋습니다.


답변

이것을 시도하십시오 :

x = " {{ Hello }} {0} "
print x.format(42)


답변

이 시도:

x = "{{ Hello }} {0}"


답변

더 나은 것은 아니지만 참조를 위해 다음과 같이 할 수도 있습니다.

>>> x = '{}Hello{} {}'
>>> print x.format('{','}',42)
{Hello} 42

예를 들어 누군가 인쇄하려고 할 때 유용 할 수 있습니다 {argument}. 아마 더 읽기 쉽다'{{{}}}'.format('argument')

Python 2.7 이후 {}에는 인수 위치를 생략합니다 (예 : 대신 {0}).