인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

박민수님의 프로필 이미지
박민수

작성한 질문수

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

누름틀의 메모를 조회하는 방법이 궁금합니다.

해결된 질문

작성

·

32

1

질문 남겨주셔서 감사합니다.

막히면 언제든 무엇이든 자주 질문 던져주세요.

수학/과학이나 알고리즘과는 달리

업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다.

다시 말씀드리지만, 질문을 자주자주 남겨주세요.

저도 최대한 빠르게 회신 드리겠습니다.

당부드릴 두 가지가 있습니다.

① 가급적 구체적으로 설명해주세요.
② 특정 챕터 관련 질문 남겨주실 때는,
어느 챕터인지 알려주세요ㅜ

====================================

 안녕하세요~
막히는 부분이 있을 때마다 항상 많은 도움을 받고 있습니다.

예전에 누름틀의 메모를 가져오는 방법에 문의하고 잘 활용하고 있는데
누름틀의 개수가 많아지면 생각보다 조회하는 시간이 오래 걸려서 다시 질문을 합니다.
누름틀 필드로 커서를 이동한 후 내용을 추출하는 방법 말고 다른 방법이 없을까요??

 

누름틀의 필드이름을 알면 누름틀 안의 안내문, 메모 내용을 추출하는 방법이 궁금합니다.

 

 

답변 1

1

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

민수님 안녕하세요?

직접적인 메서드는 없지만, xml 파싱하듯 필드 정보를 가져올 수 있습니다.

예를 들어 아래는

[
    {"name": 필드1이름, "direction": 필드1안내문, "memo": 필드1메모},
    {"name": 필드2이름, "direction": 필드2안내문, "memo": 필드2메모},
    ...,
]

방식으로 리턴하는 코드입니다.
중간에 문자열 가공이 귀찮아서 정규식을 써버렸는데,
더 깔끔한 방법으로 바꾸면 좋을 것 같습니다...ㅠ

 

import xml.etree.ElementTree as ET
import re

from pyhwpx import Hwp


hwp = Hwp()

txt = hwp.GetTextFile("HWPML2X")
root = ET.fromstring(txt)
results = []
for field in root.findall(".//FIELDBEGIN"):
    name_value = field.attrib.get("Name")
    command = re.split(r"(Clickhere:set:\d+:Direction:wstring:\d+:)|( HelpState:wstring:\d+:)", field.attrib.get("Command")[:-2])
    results.append({"name": name_value, "direction": command[3], "memo": command[-1]})
녹화_2024_12_26_19_17_44_602.gif

 

코드 쓰기 귀찮으실까봐..
pyhwpx 최신버전(0.41.8)에 hwp.get_field_info()를 추가해 두었습니다.

혹시 다른 방식으로 작동하길 원하시면 댓글로 제안해주시기 바랍니다. 

 

행복한 하루 되세요^^

박민수님의 프로필 이미지
박민수
질문자

제가 원했던 대로 잘 작동합니다.

항상 정성스럽게 답변해 주셔서 감사합니다!!

박민수님의 프로필 이미지
박민수

작성한 질문수

질문하기