Completion over Perfection

Python(파이썬) 중괄호('{}')가 이미 포함된 문자열 포맷팅 방법 본문

파이썬 (Python)

Python(파이썬) 중괄호('{}')가 이미 포함된 문자열 포맷팅 방법

난차차 2020. 5. 24. 00:58
반응형

Python(파이썬) 중괄호('{}')가 이미 포함된 문자열 포맷팅 방법

 

오늘은 중괄호{} 가 이미 따옴표'' 안에 들어있을 때, 

문자열을 변수로 넣어야 할 경우 어떻게 넣어야하는지에 대해서 알려드리겠습니다.

 

따옴표 안의 중괄호 안의 따옴표 안의 중괄호..

 

많은 분들이 아시다시피 파이썬에서 문자열 안에 문자변수를 넣는 방법은 세 가지 방법이 있죠.

 

  ① % operation : '%s' % (버전 상관없이 지원)

  ② str.format : '{변수}'.format() (Python 3 ↑ 지원)

  ③ f-string : f'{변수}' (Python 3.6 ↑ 지원)

 

저는 개인적으로 ②번 아니면 ③번을 자주 사용하는데요, 

이 방법이 먹히지 않는 경우가 생겼습니다.

 

보통의 경우에는 다음과 같이 따옴표가 하나만 들어가고 그 안에 변수를 넣으면 됐죠.

 

[파이썬 코드] - ②번 방식을 사용할 경우

name = 'John Wick'
data = "my name is {}".format(name)

print(data)

 

[결과]

my name is John Wick

 

일반적인 문자열 포매팅의 경우

 

 

하지만 따옴표 안에 중괄호가 이미 들어가 있고, 

그 안에서 문자열 포맷팅을 해야하는 경우에는 위의 방식대로 할 경우 정상적으로 결과가 나오지 않습니다. 

예시를 들어 보겠습니다.

 

이런 식으로 대괄호 안에 name 변수를 포맷팅 하고 싶을때는??

 

②번 방법을 사용하는 경우

 

[파이썬 코드]

name = 'John Wick'
data = "{'my name is {}'}".format(name)

print(data)

 

[결과]

line 3, in <module>
    data = "{'my name is {}'}".format(name)
ValueError: unexpected '{' in field name

 

②번 방법을 사용해 보았는데 에러가 뜹니다. 

 

str.format를 사용할 경우 에러가 발생한다.

 

그럼 ③번 방법을 사용해 보겠습니다. 

 

[파이썬 코드]

name = 'John Wick'
data = f"{'my name is {name}'}"
print(data)

 

[결과]

my name is {name}

 

에러는 발생하지 않지만, 문자열 변수가 제대로 들어가지 않고, 변수명만 출력이 되었네요.

원하는 결과가 아니죠.

 

f-string을 사용할 경우, 변수명이 그대로 출력된다.

 

결론은 ①번 방법을 사용해야 정상적으로 출력이 됩니다. 

 

[파이썬 코드]

name = 'John Wick'
data = "{my name is %s}" % 'John Wick'

print(data)

 

[결과]

{my name is John Wick}

 

중괄호 안에 변수가 제대로 들어가 출력되었다!

 

다른 방법들을 찾아보려고 시도해봤으나, 

그냥 번 방법을 사용하는게 제일 속편했습니다. 

 

API 호출을 할 때, JSON 데이터를 저런식으로 따옴표 중괄호 콤보로 request 해야하는 경우,

그 안에서 문자 변수(날짜 등)를 바꿔줘야 할 때 유용하게 사용했었습니다. 

 

다른분들도 도움이 되시길 바래요~

반응형
Comments