site_logo

파이썬 f-string 오류 해결하기 ‘f-string: empty expression not allowed’

SyntaxError: f-string: empty expression not allowed

파이썬에서 f-string 사용 시 발생하는 이 오류는, f-string 내용 중 중괄호'{}’에 원인이 있다. 내가 발견한 원인은 크게 두 가지인데 ①중괄호로 지정된 변수가 제대로 정의되어 있지 않을 때 ②빈 중괄호가 있을 때 생긴다. 어쨌든 중괄호가 빈 표현식으로 인식되는 것이 주 원인이다.

예를 들어 보자. 내 f-string 내용물의 일부를 캡처한 것이다. 보이는 것처럼 {keyword} 형식으로 중괄호를 사용했다. keyword라는 변수가 들어가는 부분이라 중괄호로 감싸놓은건데, 대략적으로 뼈대를 잡는 단계여서 아직 변수가 지정되어 있지 않다.(?!) 이렇게 중괄호 안에 무의미한 내용이 들어있을 경우 이 부분을 해결해줘야 한다.

그래서 한 줄을 추가해 변수를 지정했다. keyword가 아직은 더미용(?) 임시 변수라서(함수를 아직 안 짬) 임시 텍스트로 정의해줬다. 텍스트를 나타낼 땐 작은 따옴표로 감싸주면 된다.

keyword = '키워드' #임시텍스트

다음으로 두 번째 경우다. 고의적으로 문자열에 {}를 넣어야 하는 경우가 있다. 나의 경우 본문에 자바스크립트가 포함되는데 여기에 {} 부분을 불가피하게 넣어야 했다. 그런데 이 자바스크립트 코드가 f-string에 포함되어버리니까, 빈 중괄호를 허용하지 못하는 f-string 코드에서 자꾸 empty 오류가 뜨는 것이었다.

챗GPT에게 물어 해결 방법을 찾아보았다. f-string을 사용할 때 중괄호 {}는 파이썬의 f-string 표현식과 충돌을 일으킬 수 있기 때문에, 이러한 상황에서는 중괄호를 이스케이프하여 문자열로 처리해야 한다고 한다. ‘이스케이프’라는 개념을 처음 들어봤지만 대략 짐작이 갔다.

🤔중괄호'{}' 이스케이프 처리 방법
① '{}' 부분을 '\{\}'로 바꾼다.
② '{}' 대신 '%s'를 사용한다.
③ 중괄호를 중괄호 두 개로 바꾼다. 즉, '{}'를 '{{}}'로 변경한다.

단, f-string이라는 점을 감안하면 3번 방법을 권한다. 1번 방법은 함정이다. f-string에서는 역슬래시는 사용할 수 없기 때문에 ‘SyntaxError: f-string expression part cannot include a backslash’ 오류가 떴다. 챗GPT가 잘못 알려준 것🥶

챗GPT에게 추궁했더니 죄송하다고 하며 다시 알려준 게 2번, 3번 방법이다. (너무 웃겨ㅠㅠ) 2번 방법은 시도해보지 않고 바로 3번을 시도했다.

이처럼 스크립트의 ‘{}’ 부분을 ‘{{}}’ 로, 두 겹으로 전부 수정해주었다. 그랬더니 empty 에러가 뜨지 않고 ‘{}’를 문자열로 인식하며 정상 작동되었다. 😌

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top
yellow-solid

Social Media

Blog