Skip to content

검색·치환·미리보기

"""Read-only preview, literal replacement, and regex replacement."""
from pathlib import Path
from pywpdoc import Document


def run(fmt: str, out_dir: Path) -> Path:
    out_dir.mkdir(parents=True, exist_ok=True)
    doc = Document.new(fmt)
    doc.add_paragraph("Customer: Alice; Amount: 123")
    preview = doc.preview_replace("Alice", "Bob")
    assert preview.count == 1
    assert "Alice" in doc.paragraphs[-1].text  # preview never edits
    assert doc.replace_text("Alice", "Bob") == 1
    assert doc.replace_regex(r"\b123\b", "456") == 1
    path = out_dir / f"search-replace.{fmt}"
    doc.save(path)
    assert "Bob" in Document.open(path).paragraphs[-1].text
    return path


if __name__ == "__main__":
    import sys
    print(run(sys.argv[1], Path(sys.argv[2])))
  • doc.find(query)는 텍스트 위치 정보 목록을 반환합니다.
  • doc.preview_replace(search, replacement)는 수정 없이 후보를 확인하고 count, matches, to_dict()를 제공합니다.
  • doc.replace_text(search, replacement)는 문서를 실제로 수정하며 치환 개수(int)를 반환합니다.
  • doc.find_regex(pattern), doc.replace_regex(pattern, replacement)는 정규식을 처리하지만 텍스트 필드·변경 추적 경계 등 안전하지 않은 구간은 제한합니다.

everywhere, case_sensitive, count는 메서드별 시그니처를 확인하세요. 미리보기의 오프셋은 화면의 좌표가 아니라 문단 논리 텍스트 기준입니다.