Word の検索と置換機能は、文書内のテキストを効率的に更新するための便利な手段です。手作業による検索や編集の手間を省き、文書全体の対象テキストを一括で置換できます。これにより、作業時間を短縮できるだけでなく、すべての該当箇所が確実に更新されるため、一貫性のある修正が可能です。本記事では、Spire.Doc for Python を使用して、Python で Word 文書内のテキストを検索して置換する方法を紹介します。 Word 文書内のテキスト検索と全置換 Word 文書内のテキスト検索と最初の置換 正規表現による Word 文書内のテキストの検索と置換 Word 文書内のテキストの検索と画像への置換 Spire.Doc for Python のインストール この操作には、Spire.Doc for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.Doc for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。 pip install Spire.Doc Word 文書内のテキスト検索と全置換 Document.Replace() メソッドを使用すると、特定のテキストを検索し、そのすべての該当箇所を別のテキストに置換できます。詳細な手順は以下のとおりです。 Document オブジェクトを作成します。 Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。 Document.Replace() メソッドを使用して、特定のテキストを検索し、すべての該当箇所を新しいテキストに置換します。 Document.SaveToFile() メソッドを使用して、変更後の文書を保存します。 Python from spire.doc import Document # Document オブジェクトを作成します document = Document() # Word 文書を読み込みます document.LoadFromFile("Sample.docx") # 指定したテキストを検索し、すべての出現箇所を別のテキストに置換します document.Replace("ビタミン", "Vitamin ", False, True) # 置換後の文書を保存します document.SaveToFile("output/すべての検索と置換.docx") document.Close() Word 文書内のテキスト検索と最初の置換 Spire.Doc for Python では、Document.ReplaceFirst プロパティを使用することで、すべての該当箇所ではなく、最初の該当箇所のみを置換するモードに変更できます。以下の手順で、最初の該当箇所のみを置換する方法を説明します。 Document オブジェクトを作成します。 Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。 Document.ReplaceFirst プロパティを True に設定し、最初の該当箇所のみを置換するモードに変更します。 Document.Replace() メソッドを使用して、最初の該当箇所を新しいテキストに置換します。 Document.SaveToFile() メソッドを使用して、変更後の文書を保存します。 Python from spire.doc import Document # Document オブジェクトを作成します document = Document() # Word 文書を読み込みます document.LoadFromFile("Sample.docx") # 置換モードを最初の一致のみ置換するように設定します document.ReplaceFirst = True # 指定したテキストの最初の出現箇所を別のテキストに置換します document.Replace("ビタミン", "Vitamin ", False, True) # 置換後の文書を保存します document.SaveToFile("output/最初の一致の検索と置換.docx") document.Close() 正規表現による Word 文書内のテキストの検索と置換 Document.Replace() メソッドに Regex オブジェクトと新しいテキストを渡すことで、正規表現に一致するテキストを置換できます。詳細な手順は以下のとおりです。 Document オブジェクトを作成します。 Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。 Regex オブジェクトを作成し、特定のテキストに一致するパターンを定義します。 Document.Replace() メソッドを使用して、正規表現に一致するテキストを新しいテキストに置換します。 Document.SaveToFile() メソッドを使用して、変更後の文書を保存します。 Python from spire.doc import Document, Regex # Document オブジェクトを作成します document = Document() # Word 文書を読み込みます document.LoadFromFile("Sample1.docx") # 先頭が # のテキストに一致する正規表現を作成します regex = Regex(r"ORD-d{8}") # 正規表現に一致するテキストを検索し、別のテキストに置換します document.Replace(regex, "ORD-[注文ID]") # 文書を保存します document.SaveToFile("output/正規表現での検索と置換.docx") document.Close() Word 文書内のテキストの検索と画像への置換 Spire.Doc for Python には、テキストを直接画像に置換するメソッドはありませんが、テキストの位置に画像を挿入し、その後テキストを削除することで実現できます。詳細な手順は以下のとおりです。 Document オブジェクトを作成します。 Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。 Document.FindAllString() メソッドを使用して、文書内の特定のテキストを検索します。 検索結果をループ処理します。 DocPicture オブジェクトを作成し、DocPicture.LoadImage() メソッドを使用して画像を読み込みます。 検索したテキストを TextRange オブジェクトとして取得し、その段落内でのインデックスを取得します。 画像をテキストの位置に挿入し、その後 TextRange を削除します。 Document.SaveToFile() メソッドを使用して、変更後の文書を保存します。 Python from spire.doc import Document, DocPicture # Document オブジェクトを作成します document = Document() # Word 文書を読み込みます document.LoadFromFile("Sample2.docx") # 文書内の指定したテキストを検索します selections = document.FindAllString("image_laptop", True, True) index = 0 testRange = None # 検索結果をループ処理します for selection in selections: # 画像を読み込みます pic = DocPicture(document) pic.LoadImage("Laptop.jpg") # 検索されたテキストを単一のテキスト範囲として取得します testRange = selection.GetAsOneRange() # テキスト範囲が属する段落内のインデックスを取得します index = testRange.OwnerParagraph.ChildObjects.IndexOf(testRange) # 指定したインデックスに画像を挿入します testRange.OwnerParagraph.ChildObjects.Insert(index, pic) # テキスト範囲を削除します testRange.OwnerParagraph.ChildObjects.Remove(testRange) # 変更後の文書を保存します document.SaveToFile("output/テキストを検索して画像に置き換える.docx") document.Close() 一時ライセンスを申請する 結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。