강의

멘토링

로드맵

Inflearn brand logo image

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

야베스님의 프로필 이미지
야베스

작성한 질문수

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

win32com 으로 hwp 문자열 검색하기 문의

작성

·

91

1

강사님 강의를 듣고 있는 파이썬 초보입니다.

파이썬으로 hwp 파일을 읽어서 특정 문자열을 검색하는 기능을 구현하려고 합니다.

특정 문자열의 위치와 그 문자열 주위의 문자열을 보여주는 기능입니다.

win32com.client 모듈로 구현하려는데 특정 문자열의 위치를 인식하는 기능이 구현이 안 되네요..

간단한 코드는 아래와 같습니다.. 좀 봐주시면 감사하겠습니다.

hwp.InitScan()

while True:

state, text = hwp.GetText()

print(state, text)

#여기서 찾는 문자열 비교해서 찾았다면 해당 문자열의 위치(행,열 또는 List,Para,Pos)를

#print()로 확인 가능한지요?

if state <= 1:

break

hwp.ReleaseScan()

 

답변 2

1

안녕하세요, 인프런 AI 인턴입니다.
야베스님이 파이썬을 사용하여 한글 파일에서 특정 문자열을 검색하는 기능을 구현하시려는군요. win32com 모듈을 사용해 hwp 파일에서 특정 문자열의 위치를 찾고자 하시는 것 같습니다.

파이썬의 win32com을 사용하여 문서의 텍스트를 검색할 때, GetText() 메소드를 활용하고 있으며, statetext 변수를 통해 문서의 각 부분을 읽고 계신 것 같습니다. 그러나, GetText() 메소드만으로는 문자열의 정확한 위치를 직접적으로 얻기 어려운 면이 있습니다.

다음의 방법을 고려해 볼 수 있습니다:

  1. 문자열 검색: 여러분이 찾고자 하는 문자열을 hwp.GetText()text와 비교합니다. text가 해당 문자열을 포함하고 있을 경우, 그 주변 문자열을 가져올 수 있습니다.

  2. 위치 추적: GetText() 호출 시 반환되는 state 값은 현재 문서를 스캔하고 있는 상태를 나타냅니다. 반환되는 state를 활용하여 대략적인 위치를 확인할 수 있으며, 구조적으로 하위 문단 내의 위치를 수작업으로 추적할 수 있습니다.

  3. 추가 라이브러리 사용: win32com 외에 좀 더 강력한 텍스트 처리를 원하는 경우 pyhwp 같은 라이브러리를 활용해 보세요.

다음은 구체적인 코드 예제입니다. 이러한 코드에서 statetext가 어떻게 다루어지는지를 좀 더 살펴보아야 합니다. 코드 내에서는 특정 텍스트를 발견했을 때 위치 정보를 직접 프린트하도록 구현합니다.

hwp.InitScan()

while True:
    state, text = hwp.GetText()
    if state <= 1:
        break
    if "찾는 문자열" in text:  # 여기서 '찾는 문자열'을 원하는 것으로 바꿔주세요.
        print(f"문자열 '{text}'이/가 포함되어 있습니다.")
        # state로 위치 추적 로직을 추가합니다.
        # 위치 정보는 문서의 컨텍스트에 근거한 자체 구현이 필요함.

hwp.ReleaseScan()

한글 파일 구조에 따라 위치를 정확히 알아내기 위해서는 문서 구조에 대한 추가적인 정보와 방법이 필요할 수 있습니다. pyhwp 같은 라이브러리를 통해 추가적인 기능을 구현할 수 있을지도 모릅니다.

원하시는 답변을 찾지 못하셨다면, 인프런의 문의하기 기능을 사용하여 문의를 남기시면 빠른 답변을 받으실 수 있습니다.
https://www.inflearn.com/faq

0

야베스님의 프로필 이미지
야베스
질문자

hwp.GetPos()
강의에서 나오는 위 함수로 해결했습니다.
감사합니다.
야베스님의 프로필 이미지
야베스

작성한 질문수

질문하기