본문 바로가기
아래아한글 자동화/pyhwpx 사용법

pyhwpx로 필드 채우는 방법 기초(중요)

by 일코 2023. 12. 26.

아래아한글 문서에 필드가 삽입되어 있는 경우
각 필드에 값을 채워넣는 몇 가지 방법을 소개한다.

1. 문서 내에 동일한 이름의 필드가 여러 개 존재하는 경우

①단순히 hwp.put_field_text(field=필드명, text=값)으로 입력하면,
    해당하는 모든 필드에 동일한 값이 일괄 삽입된다.

 

②만약 "이름"이라는 필드마다 다른 이름을 입력하고 싶다면,
    두 번째(text) 파라미터에 리스트나 튜플을 넣으면 된다.

 

③ 동일명의 필드 중 n번째 필드에만 특정 문자열을 입력하는 경우에는 idx 파라미터를 추가하면 된다.

idx 파라미터를 사용하지 않고,
직접 field{{i}} 방식을 사용할 수도 있다.
(f스트링을 사용하는 경우, f스트링이 중괄호 세 겹을 소모하므로 총 다섯겹의 중괄호로 감싸야 함)

여기까지 기본적인 put_field_text 사용법이다.
그러나 실제로는 아래 방식으로 입력하는 경우가 훨씬 많을 것이다.

2. 필드명이 다양한 경우(주로 이 경우일 것)

엑셀이나 데이터베이스에서, 혹은 판다스 데이터프레임 등에서 값을 가져오는 경우에는
아래 방식을 사용하는 것이 훨씬 간편하다.

① field는 문자열, text도 리스트(혹은 판다스 데이터프레임)인 경우,
    for문을 돌리지 말고, 필드 하나당 put_field_text 한 줄씩 실행하면 된다.
    (참고로 문서의 표의 빈 칸에는 각각 "이름", "나이", "성별"이라는 필드가 생성된 상태이다.)

필드가 세 개라서 세 줄 입력

 

② 필드가 서너 개 수준이 아니라 아주 많은 경우에는,
    dict나 DataFrame을 사용하는 것이 편할 수도 있다.

만약 특정 인덱스의 필드에만 dict의 키와 값을 적용하고 싶다면 idx 파라미터를 사용하면 된다.

 

당연한 이야기지만, 특정 필드(예: 이름)에만 값을 채우고 싶다면,
dict의 키를 사용해 일부만 삽입할 수 있다.

 

파이썬으로 어느 정도 데이터를 다루다 보면
대부분 판다스 데이터프레임을 사용하게 되는데,
데이터프레임 또한 dict와 유사하게 삽입 가능하다.
데이터프레임 전체 삽입은 아래와 같이 간단히~

만약 df의 행렬이 반대라서 칼럼명이 인덱스에 들어가 있더라도,
move_to_field 내부에서 transpose를 자동으로 시도한다.

 

df의 특정 행만 삽입하고자 할 때는, 역시 idx 파라미터를 사용해야 한다.

판다스 데이터프레임에 굳이 axis 파라미터가 있어야 하는가 의문이 있었는데,
이 기능을 추가하면서..
2차원 배열의 "모호함"에 대해 예전보다 뚜렷하게 느끼게 된다.
왜 axis의 기본값이 0인지도 어렴풋이 알게 되었다.

 

마지막으로 한/글 문서의 필드명과 df의 칼럼명이 일치하지 않는 경우에는
field 파라미터에 직접 필드명 리스트를 넣어주면 된다. text 파라미터에 df를 통으로 넣으면 된다.
(idx 파라미터까지 지정하면 특정 행만 삽입할 수 있다.)

 

마지막으로 필드의 n번에 df.iloc[m] 데이터를 삽입하고 싶은 경우에는
아래와 같이 삽입하면 된다.

위 여러가지 방법들 중 케이스에 맞는 적절한 명령어를 사용하면 된다.

필드삽입은 이 정도 짜 두면,
어떻게든 써먹을 수 있겠지...?

포스팅 작성 시점의 pyhwpx 버전은 0.5.10이다.

댓글