다산 정약용 선생님의 '유배지에서 보낸 편지'의 주요 문구를 정리하고 나름의 해석을 붙인 문서를 만든 다음, 원문 부분을 '기울임꼴'과 '파랑'으로 적용하고자 했습니다(아래 이미지 참조). 전체가 68개 항목이므로, 68번의 반복되는 수작업을 대신하, 간단한 Word 자동화 프로그램을 파이썬으로 구현하여 0.1초만에 정리를 한 코드입니다.


 
from docx import Document
from docx.shared import RGBColor

# 워드 문서 열기
doc = Document(r"C:\Users\user\Desktop\dasan_input.docx")

# 플래그: '가. 원문 인용'을 만난 뒤 다음 문단을 수정하기 위해 사용
mark_next = False  

for para in doc.paragraphs:
    text = para.text.strip()

    if mark_next:
        # 본문(원문 인용 부분) 스타일 적용
        for run in para.runs:
            run.italic = True  # 기울임꼴
            run.font.color.rgb = RGBColor(0, 0, 255)  # 파랑 (RGB 값)
        mark_next = False  # 한번 적용 후 초기화

    # '가. 원문 인용' 찾기
    if text.startswith("가. 원문 인용"):
        mark_next = True

# 수정된 문서 저장
doc.save(r"C:\Users\user\Desktop\dasan_output.docx")
 

 

* 주의 사항 1:

     터미널(또는 명령 프롬프트, PowerShell)에서 아래 실행: 

     pip install python-docx

       - docx 라고만 설치하는 다른 패키지가 있는데, 그것은 오래된 버전입니다. 꼭 python-docx 를 설치해야 합니다.

       - Jupyter Notebook을 쓰신다면 !pip install python-docx 로 실행하시면 됩니다.

 

 

* 주의 사항 2:

    Python 문자열에서 \U 같은 건 유니코드 이스케이프로 해석되기 때문에,
   파일 경로 C:\Users\user\Desktop\input.docx 를 그대로 쓰면 에러가 납니다.

       - 방법 1: r"문자열" (raw string) 사용

           doc = Document(r"C:\Users\user\Desktop\input.docx")

           r을 붙이면 \가 escape 되지 않고 그대로 처리됩니다. 가장 깔끔한 방법이에요.

       - 방법 2: 역슬래시 두 번 (\\) 사용

           doc = Document("C:\\Users\\user\\Desktop\\input.docx")

           Python에서 \\는 실제 \ 한 개로 인식됩니다.

       - 방법 3: 슬래시(/)로 바꾸기

           Windows에서도 /를 경로 구분자로 인식합니다.

           doc = Document("C:/Users/user/Desktop/input.docx")

    정리하면 → 제일 편한 건 방법 1 (raw string) 또는 방법 3 (슬래시 사용) 을 일반적으로 씁니다.

 

반응형

+ Recent posts