안녕하세요

 

오늘은 한글파일 내에 존재하는 전화번호를 삭제하는 프로그램을 짜볼까 합니다.

 

하나의 한글파일이라면 수작업으로 전화번호를 삭제할 수 있겠지만

 

파일이 여러개이다 보면 많이 귀찮고 시간도 많이 걸리게 되죠

 

한글파일을 한 곳에 모아 놓고요 여기에서는 E:\접수 폴더에 넣어놨습니다.

 

파일을 열게되면

 

각종 정보가 들어가 있고 마지막에 연락처가 들어가 있습니다.

 

이 부분을 삭제하는 코드를 짜보도록 하겠습니다.

 

한글을 쓸 것이므로 아래 코드를 쓰고요

# -*- coding: cp949 -*-

 

한글  api  를 쓸 것이므로 아래 라이브러리를 불러와 줍니다.
import win32com.client as win32

 

그리고 폴더에 hwp를 검색할 수 있도록 아래 라이브러리도 불러와 줍니다.
import os

import fnmatch

 

한글객체를 불러와 주고요

hwp = win32.gencache.EnsureDispatch("HWPFrame.HwpObject")

 

먼저 전화번호를 찾아야 되는데요

전화번호의 형식이 여러개가 있겠죠, 모두 다 써줍니다.

아래에서 ? 표시는 와일드카드로 어떤 숫자가 와도 찾겠다는 뜻 입니다.
data=["(0?-???-????)","(0?-????-????)","(0??-???-????)","(0??-????-????)","0?-???-????","0?-????-????","0??-???-????","0??-????-????"]

 

그리고 E:\접수 폴더에 있는 모든 hwp 파일을 filename 에 건네줍니다.
dir1=os.getcwd()
dir1="E:₩₩접수₩₩"
filename=fnmatch.filter(os.listdir(dir1),'*.hwp')

 

 

모든 파일을 돌면서
for file in filename:

 

파일을 열어줍니다.
  hwp.Open(dir1+file, "HWP", "forceopen:true")

 

그리고 아래 코드에 따라서 '찾아 바꾸기'를 해줍니다.
  hwp.HAction.GetDefault("AllReplace", hwp.HParameterSet.HFindReplace.HSet);
  option=hwp.HParameterSet.HFindReplace
  i=0

 

 전화번호 형식에 걸리는 것을 모두 찾아서 빈칸으로 바꿔줍니다.
  for j in data:

    option.FindString = data[i];
    option.ReplaceString = "";
    option.IgnoreMessage = 1;
    option.UseWildCards = 1;
    hwp.HAction.Execute("AllReplace", hwp.HParameterSet.HFindReplace.HSet);
    i = i + 1

 

저장하고 닫고요
  hwp.Clear(3);

 

한글을 종료합니다.
hwp.Quit()

 

실행하면

폴더 내의 모든 파일 내 연락처가 삭제된 것을 확인하실 수 있습니다.

 

아래는 코드입니다.

 

참고바랍니다.

 

감사합니다.


# -*- coding: cp949 -*-
import win32com.client as win32
import os
import fnmatch

hwp = win32.gencache.EnsureDispatch("HWPFrame.HwpObject")
#전화번호 정보
data=["(0?-???-????)","(0?-????-????)","(0??-???-????)","(0??-????-????)","0?-???-????","0?-????-????","0??-???-????","0??-????-????"]

dir1=os.getcwd()
dir1="E:₩₩접수₩₩"
filename=fnmatch.filter(os.listdir(dir1),'*.hwp')

for file in filename:
    hwp.Open(dir1+file, "HWP", "forceopen:true")
    hwp.HAction.GetDefault("AllReplace", hwp.HParameterSet.HFindReplace.HSet);
    option=hwp.HParameterSet.HFindReplace
    i=0
    for j in data:
        option.FindString = data[i];
        option.ReplaceString = "";
        option.IgnoreMessage = 1;
        option.UseWildCards = 1;
        hwp.HAction.Execute("AllReplace", hwp.HParameterSet.HFindReplace.HSet);
        i = i + 1
    hwp.Clear(3);

hwp.Quit()

+ Recent posts