해결된 질문
작성
·
15
1
수학/과학이나 알고리즘과는 달리
업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다.
다시 말씀드리지만, 질문을 자주자주 남겨주세요.
저도 최대한 빠르게 회신 드리겠습니다.
====================================
안녕하세요 일코님~
블럭처리를 한 상태에서 실행하면 그 블럭의 텍스트를 반환해주는 함수를 쓰고있는데요.
def extract_text_from_block():
hwp.InitScan(range=0xff) # 0xff <<선택된 범위 내에서 검색
_, text_blokced = hwp.GetText() # 텍스트만 추출
hwp.ReleaseScan() # 스캔을 해제.
return text_blokced # 이경우, 해당 target이 text에 포함되어있으면 True, 아니면 False를 반환.
어떻게 하다보니깐 만들어서 쓰고있는데.. 문제는 이게 para 1개를 넘어가면 \r\n을 반환하고 아무것도 반환하지 않네요..
단락 하나를 넘어가지 않게 블럭설정하면 잘 작동하는데요. 여러줄에는 먹히지가 않네요..
(1) 일단 블록설정한 text를 변수에 할당할 때 이런식으로 함수를 쓰는게 효율적인 방법인지?
(2) 만약 괜찮은 방법이라면, 여러줄을 블록설정한뒤에 변수에 할당하려면 어떻게 해야하는지?
이렇게 두가지가 궁금합니다!
감사합니다!!
답변 1
0
앗, GetText는 문단별로 끊어서 리턴을 합니다.
while 등 반복문이랑 같이 쓰셔야 해요.
제가 임의로 만들어 사용하고 있는 get_selected_text
함수를 보여드리겠습니다.
( pyhwpx
모듈의 get_selected_text
메서드 일부입니다.)
def get_selected_text(as_="str"):
"""
한/글 문서 선택 구간의 텍스트를 리턴하는 메서드.
as_="list"로 설정하면 문단별로 리스트에 담아 리턴한다.
표 안에서 선택한 셀의 문자열들을 가져오는 경우에도
as_="list" 옵션을 주는 것이 좋다.
"""
if hwp.SelectionMode == 0:
if hwp.KeyIndicator()[-1].startswith("("):
hwp.HAction.Run("TableCellBlock")
else:
hwp.HAction.Run("Select")
hwp.HAction.Run("Select")
if not hwp.InitScan(Range=0xff):
return ""
if as_ == "list":
result = []
else:
result = ""
state = 2
while state not in [0, 1]:
state, text = hwp.GetText()
if as_ == "list":
result.append(text)
else:
result += text
hwp.ReleaseScan()
return result if type(result) == str else result[:-1]