• 카테고리

    질문 & 답변
  • 세부 분야

    업무 자동화

  • 해결 여부

    해결됨

다단 공백감지 질문드립니다.

24.04.01 16:50 작성 조회수 79

1

하루에 2개를 질문하기 살짝 망설였습니다만

주제가 너무 다르다 생각하여 따로 질문드립니다.

KakaoTalk_20240401_164120980.jpg다단으로 내용이 입력되어 있는 상황에서

위와 같이

단 위 부분에 ^n가 있는 경우 이를 제거하려합니다.
하지만 단1의 아래의 ^n까지 제거하게 된다면
n. 부분이 단1로 넘어가 지져분해질 수도 있을거 같아서

'별' 부분만을 감지하고 제거할 수 있을지 질문드려봅니다.

 

답변 2

·

답변을 작성해보세요.

1

안녕하세요?

아래아한글에서 페이지 내 다음 단의 시작으로 이동하는 명령어는

hwp.HAction.Run("MoveNextColumn")  # 다음 단으로 이동
hwp.HAction.Run("MoveColumnBegin")  # 해당 단의 시작문단으로 이동

입니다.

다만 위 명령어는 동일 페이지 내에서만 이동하는 명령어입니다.

특정 페이지의 마지막 단에서 MoveNextColumn을 실행하면 False를 리턴합니다.

 

그래서,

① MoveNextColumn을 실행했을 때 False를 리턴하면

② 이어서 MovePageDown을 실행해보고, MovePageDown이 True를 리턴하면

③ MoveColumnBegin을 실행한 후 정리작업을 하고

다시 MoveNextColumn을 실행하는 식으로 반복하는 코드를 짜면 됩니다.

 

간단한 예시를 보여드리겠습니다.

from time import sleep
from pyhwpx import Hwp

hwp = Hwp()

hwp.MoveDocBegin()
i = 0
while hwp.MoveNextColumn() or hwp.MovePageDown():
    hwp.MoveColumnBegin()
    while hwp.MoveSelRight():
        if hwp.get_selected_text(as_="str") == "":
            sleep(0.5)
            hwp.Run("Delete")
        else:
            break

 

image(빈공간을 지우는 과정을 보여드리기 위해 일부러 0.5초 sleep을 걸었습니다.)

 

도움이 되었기를 바랍니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.03

안녕하세요, 인프런 AI 인턴입니다.

YongJun(Passion)님, 이미지를 직접 확인할 수 없어 구체적인 코드 제공이 어렵지만, 파이썬에서 특정 패턴을 감지하고 제거하는 일반적인 방법에 대해 말씀드릴 수 있습니다.

문제를 해결하기 위해, 정규 표현식(Regular Expression)을 사용할 수 있습니다. Python에서는 re 모듈을 이용해 정규 표현식을 작업할 수 있습니다. 특정 패턴을 찾아 제거하려면 re.sub() 함수를 사용할 수 있습니다.

^n 위치에 있는 ‘별’ 부분을 감지하려면, 단의 시작과 끝을 구분할 수 있는 특정 패턴이 필요합니다. 예를 들어, 단과 단 사이에 특별한 문자나 문자열 패턴이 있다면, 해당 패턴을 기준으로 텍스트를 분리하고, 그 중 원하는 부분만을 선택해 ‘별’ 부분을 제거할 수 있습니다.

예제 코드는 아래와 같아요.

import re

text = "여기에 수정하고자 하는 텍스트를 넣으세요."
pattern = "패턴을 정의하세요. 예: \n\*"
replace_with = ""

new_text = re.sub(pattern, replace_with, text)

print(new_text)

이 예제에서는 pattern에 원하는 패턴을 정의하고, 해당 패턴과 일치하는 부분을 빈 문자열(replace_with)로 대체하여 제거합니다. ‘별’의 정확한 패턴이나 위치를 구체적으로 알아야 정확한 정규 표현식을 제공할 수 있습니다.

패턴 정의에 애매한 부분이 있거나 추가적인 도움이 필요하다면, 파이썬 정규 표현식에 대해 더욱 깊이 연구해보시거나, 구체적인 조건을 명시한 질문을 추가로 작성해 주세요.