작성
·
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()
메소드를 활용하고 있으며, state
와 text
변수를 통해 문서의 각 부분을 읽고 계신 것 같습니다. 그러나, GetText()
메소드만으로는 문자열의 정확한 위치를 직접적으로 얻기 어려운 면이 있습니다.
다음의 방법을 고려해 볼 수 있습니다:
문자열 검색: 여러분이 찾고자 하는 문자열을 hwp.GetText()
의 text
와 비교합니다. text
가 해당 문자열을 포함하고 있을 경우, 그 주변 문자열을 가져올 수 있습니다.
위치 추적: GetText()
호출 시 반환되는 state
값은 현재 문서를 스캔하고 있는 상태를 나타냅니다. 반환되는 state
를 활용하여 대략적인 위치를 확인할 수 있으며, 구조적으로 하위 문단 내의 위치를 수작업으로 추적할 수 있습니다.
추가 라이브러리 사용: win32com
외에 좀 더 강력한 텍스트 처리를 원하는 경우 pyhwp
같은 라이브러리를 활용해 보세요.
다음은 구체적인 코드 예제입니다. 이러한 코드에서 state
와 text
가 어떻게 다루어지는지를 좀 더 살펴보아야 합니다. 코드 내에서는 특정 텍스트를 발견했을 때 위치 정보를 직접 프린트하도록 구현합니다.
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