해결된 질문
작성
·
42
·
수정됨
1
2-4. [응용] 엑셀문서 값을 필드에 입력하기 관련입니다.
# 1. 함수 정의
def 필드삽입(index, value):
# 2. 필드 목록 만들기
field_list = ["이름", "성별", "생일", "취미"]
# 3. 반복문으로 필드에 데이터 넣기
for idx, field in enumerate(field_list):
# 4. 한글 문서에 데이터 입력하기
hwp.PutFieldText(f"{field}{{{{{index}}}}}", value[idx])
위의 코드에서 바로 이 부분..
hwp.PutFieldText(f"{field}{{{{{index}}}}}", value[idx])
그중에서도 아래의 구문이 이해하기 어려웠습니다.
f"{field}{{{{{index}}}}}"
이에 대하여 제가 최대한 이해하려고 풀어 써 본 것은 아래와 같습니다.
※ 아래는 엑셀(취미.xlsx)의 캡처
f"{field}{{{{{index}}}}}":
위 줄은 한글 문서 안에 있는 특정 필드를 가리키는 주소를 의미함.
예를 들어, 엑셀(취미.xlsx)의 첫 행인 2행의 이름 값을 넣고 싶다면, 한글 문서에서는 그 자리가 "이름{{0}}"에 해당할 것임.
또한, 엑셀의 3행의 이름 값을 넣을 자리라면 "이름{{1}}"이 될 것임.
그래서 f"{field}{{{{{index}}}}}"는,
여기서 field가 "이름", "성별", "생일", "취미" 중 하나이고, index는 몇 번째 데이터인지를 나타내는 숫자임.
예를 들어, 첫 행인 2행의 이름이면 "이름{{0}}", 두 번째 행인 3행의 생일이면 "생일{{1}}" 이런 식으로 만들어야 함.
그런데 여기서 왜 중괄호가 5쌍이나 있는 것인지 궁금했음. --- {{{{{index}}}}} 에 중괄호가 무려 5쌍 있음!
f"{field}{{{{{index}}}}}"에서,
{{ }} <----- 실제로 보여질 중괄호 { } 를 출력하기 위함 ..... ①
{{ }} <----- 실제로 보여질 중괄호 { } 를 출력하기 위함 ..... ②
{index} <----- 'index'라는 변수의 값 넣기 위한 부분임.
위의 ①, ②의 부분의 중첩 즉 총 4쌍의 중괄호에 의해 {{ }} 형태의 문자열이 만들어짐.
결과적으로 field = 이름이고 index = 0 이라면, f"{field}{{{{{index}}}}}" 코드는 "이름{{0}}" 이라는 문자열을 만들어 냄.
"이름{{0}}" 이라는 형태의 문자열을 만들어 내야, 이것을 이용해서 한글 문서에 hwp.PutFieldText("이름{{0}}", value[idx]) 라는 식으로 작동되어 원하는 값을 입력할 수 있는 상태가 되기 때문임.
제가 이해한 내용이 맞을까요?
중괄호도 많고 복잡해서 이해하기 어려웠는데, 저와 같은 형태로 되어야 하는 이유를 추정해 보았습니다.
답변 부탁드립니다. 감사합니다.
근데 문외한의 입장에서는 이런 거 한 줄 이해하기가 원래 이렇게 어렵게 느껴지는 게 정상인가요? ㅜㅠ
답변 1
2
맞아요ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ
어렵기도 하고 귀찮기도 합니다...
근데 중괄호가 아래아한글에서도 파이썬에서도
시맨틱하게 겹치는 기호이기 때문에
이렇게 되어버립니다ㅠ
사실 django와 Vue.js를 같이 쓴다든지 할 때에도 동일한 문제가 발생하고,
파이썬 뿐 아니라 다른 언어와 프레임워크에서도 문제가 되는 부분이기는 합니다.
그래서 Vue.js는
{{ }}
노테이션을
[[ ]]
라든지 다른 기호로 변경할 수 있는 기능도 제공하거든요..아래아한글은 그렇게까지 친절하진 않으니까요ㅜㅜㅜ
이해하신 내용이 완벽하게 맞고, (과장이 아니고, 정확합니다.)
이 정도로 정확하게 (별 도움 없이) 이해하시는 분은
사실 제가 본 적이 없습니다.
주현님은 이거 접하시기 전에 프로그래밍을 배우셨거나, 비슷한 일을 하시는 분이실까요?^^;
이해력이 빠른 분들을 보면 신기하기도 하고 부럽기도 합니다.
저도 머리가 빨리 돌아가는 편이 아니라서 배우는 것도 느리고
알려드리는 건 항상 서툽니다ㅜ
더 많은 분들께 도움이 될 수 있게 더 잘 알려드리고 싶은데,
제 머릿속에 구겨넣은 지식을 다른 사람들한테 잘 전달하는 게
항상 쉽지 않네요ㅜㅜㅜ
일코님, 저는 이 강의를 만나고서 프로그래밍이라는 것을 처음 해봤다고 보시면 거의 맞습니다.
이제 곧 40이 되는 나이이고, 예전에 배우고 싶다는 생각만 많이 했던 코딩입니다.
실상 몇 십만원짜리 파이썬 강의를 수강 신청을 2번 했던 적이 있고, 번번히 첫 한 두 강의에서 포기할 수 밖에 없었습니다. 그러고서는 코딩을 이제야 배우기엔 나이도 너무 많고 코딩은 적성에 맞지 않는 것인가 한탄만 했었습니다. (단편적으로 제가 파이참 설치하는 것만도 엄청 헤맸다는 것만 보셔도 수준을 아실 거에요;;;)
그런데 한글을 자동화 할 수 있다는, 저에게는 말도 안되어 보이는 그리고 동시에 두근거리는 미지의 세계를 보여주는 듯한 이 강의를 만나고서는 이번에도 포기하는 것이 아닌가 반신반의 하면서 수강신청을 했었습니다.
일코님이 예상하시는 것 보다 저는 배우는 속도가 매우매우 더딜거에요.
이 분야가 처음이고 생소하고 너무너무 어렵습니다. 그런데 이상하게도 이번 도전에서는 부딪히고 막히더라도 결국에는 알게 되었을 때의 기쁨이 너무도 크다는 경험을 합니다.
그래서 거북이처럼 엉금엉금 와서 엑셀 데이터를 한글문서에 옮겨다 주는 바로 이 섹션까지 올 수가 있었습니다.
간단하고 사소한 한 줄 한 줄도 지금의 저에게는 너무나 어렵기 때문에,
그 궁금증에 대해 스스로 답을 내어 보고 그것이 맞았을 때의 기쁨은 너무도 크네요.
이 멋진 강의는 그러나 앞으로 익혀야 할 부분들이 저에게는 지금은 끝도 보이지 않는 듯 합니다. 언제 완주하더라도 꼭 완주하고 싶습니다.
이 강의를 실습할 때, 제가 마치 한글 자동화라는 게임에서 LV1부터 시작하는 캐릭터인 것 처럼 느껴지는데, 앞으로는 경험치도 쌓고 스킬도 새로 얻어 가면서 막강한 몬스터들도 꼭 물리쳐 보고 싶다는 상상을 합니다.
매번 답변을 주시고 격려도 주셔서 정말 감사합니다. 저도 능숙해질 그 날을 꿈꾸며 틈틈히 해보겠습니다. ^^
django와 Vue.js 이런 건 들어본 적도 없지만, 파이썬 말고 다른 프로그램들에서도 비슷한 어려움이 있다는 설명까지 곁들여 주시니 서로 다른 프로그램도 유사한 점이 있다는 게 신기하네요.