아래아한글 문서에 필드가 삽입되어 있는 경우
각 필드에 값을 채워넣는 몇 가지 방법을 소개한다.
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이다.
'아래아한글 자동화 > pyhwpx 사용법' 카테고리의 다른 글
hwp.open으로 url주소 열기 (0) | 2024.01.01 |
---|---|
[예제] 특정 단어들에다 메모교정표 삽입하기 (0) | 2023.12.06 |
문서의 표를 csv나 판다스 데이터프레임으로 추출하는 메서드 # table_to_csv # table_to_df (0) | 2023.12.01 |
댓글