인프런 커뮤니티 질문&답변

배재완님의 프로필 이미지
배재완

작성한 질문수

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

{{{{index}}}} 의미가 궁금합니다.

해결된 질문

작성

·

519

·

수정됨

2

초보라 궁금해서...ㅠㅠ

[응용] 엑셀문서 값을 필드에 입력하기

에서...

hwp.PutFieldText(f"{field}{{{{{index}}}}}", value[idx])

{{{{{index}}}}}에 대해서 설명해 주실 수 있을런지...

 

{field}는 필드명을 가져오는건 알겠는데..

{{{{index}}}}는 추정컨데 동일필드가 여러개 있을경우 페이지 기준으로 순서를 나타내는거 같은데..{}를 5중으로 적는게...원래 저렇게 그냥 쓰는건지...다른 어떤 의미가 있는건지요?

답변 1

1

일코님의 프로필 이미지
일코
지식공유자

재완님 안녕하세요?^^

  1. 먼저 f스트링에서 {를 표시하는 방법에 대해 설명을 드려야 할 것 같습니다.

     

    기본적으로 아래 예제처럼

    >>> a = 1
    >>> b = f"aa{a}"
    >>> print(b)
    
    aa1

    라고 출력되는 건 알고 계실 겁니다.

    그런데 제가 출력하고 싶은 문자열이 "aa{1}" 라면요? f스트링을 어떻게 만들어야 할까요?
    그 땐 아래처럼 조금 복잡해집니다. 이유는 바로 말씀드리겠습니다.

    >>> a = 1
    >>> b = f"aa{{{a}}}"
    >>> print(b)
    
    aa{1}

    원하는 대로 출력되었죠?
    왜 세 겹이나 필요하나면,
    f스트링 안에서 문자 그대로의 중괄호를 출력하려면 중괄호를 두 겹으로 입력해야 하기 때문입니다.
    (바깥 두 겹의 중괄호가 문자 그대로의 중괄호 한 겹으로 바뀐 겁니다.)
    그럼, 이제 재완님도 f스트링 안에서 리터럴한(문자 그대로의) 중괄호를 몇 겹이든 표현하실 수 있겠죠?

     

  2. 다시 아래아한글로 돌아와서

    hwp.PutFieldText의 문법 중에 이런 게 있습니다.
    동일한 이름의 필드명이 여러 개 있을 때
    특정 순서의 필드 값 하나만 바꾸고 싶을 경우가 있잖아요?
    그 때 (f스트링과 무관하게) 중괄호를 두 겹 넣고 그 안에 인덱스를 넣으면 됩니다.

    예를 들어 "이름"이라는 필드가 다섯 개 있는데
    다른 필드는 그대로 두고,
    세 번째 필드에만 "홍길동"이라는 문자열을 입력하고 싶다면?
    그 때는 아래와 같이 실행하시면 됩니다.

     

    hwp.PutFieldText("이름{{2}}", "홍길동")

     

    image
    원하는 대로 바뀌었죠?

     

  3. (혹시 벌써 다 이해를 해 버리셨다면 대단하신 거예요^^)
    다시 처음의 엑셀예제로 돌아가봅시다.

     

    hwp.PutFieldText(f"{field}{{{{{index}}}}}", value[idx])

    우리의 의도는 아래아한글 문서의 field라는 같은 이름의 여러 개의 필드 중
    index번째의 값만 value[idx]로 바꾸고 싶은 거거든요.
    예를 들어 field가 "이름"이고 index가 2라면
    원래 우리가 입력해야 할 코드는

    hwp.PutFieldText("이름{{2}}", value[idx])

    가 되어야 하는데, 우리는 한 단계 더 응용해서 f스트링을 사용할 것이기 때문에

    hwp.PutFieldText("{field}{{{{{index}}}}}", value[idx])

    라고 입력한 것입니다.
    바깥 네 겹의 중괄호가 문자 그대로의 중괄호 두 겹이 되었고,
    가장 안에 있는 중괄호 하나가 index 변수와 함께 실제 index값으로 치환된 것입니다.

 

간단한 개념인데 제 설명이 너무 장황하네요ㅜㅜㅜㅜㅜ 반성합니다..

f스트링의 중괄호와 아래아한글 필드의 중괄호 두 겹이 함께
중괄호 다섯겹 대환장 스파게티파티를 벌이게 된 것입니다..ㅜ

부디 궁금증이 해결되었기를 바랍니다.
혹시 설명 중에 이해가 안 가는 부분이 있으면
다시 댓글 남겨주시면 고민해보고 다시 회신드리겠습니다^^

행복한 하루 되세요!!!

배재완님의 프로필 이미지
배재완
질문자

^^ 빠른 답변 감사합니다.

결국 아래아한글 hwp.PutFieldText의 문법 때문에 (중괄호 2개를 쓰는거) 5중이 되었던 거네요..ㅎㅎ

제일 밖에 2개는 {}를 표시하기 위해서,,그다음 두개는 아래아한글 문법 때문에..나머지 한개는 f에서 index값을 치환하기 위해서라는 말씀이죠...

이해했습니다..다시한번 감사드립니다..

일코님의 프로필 이미지
일코
지식공유자

예. 정확하게 이해하셨습니다^^
달아주신 답변을 조금만 다듬어보면

제일 밖에 네 겹은 중괄호 두 겹을 표시하기 위해서(아래아한글 문법 때문에)
그리고 제일 안에 한 겹은 index를 치환하기 위해서.

입니다^^

개떡같은 설명에도 찰떡같이 이해해 주셔서 감사드립니다ㅎ

배재완님의 프로필 이미지
배재완

작성한 질문수

질문하기