Mencari dan Mengganti Teks dalam Presentasi PowerPoint di Python

Gambaran Umum

Aspose.Slides untuk Python via .NET dapat mencari, menyorot, dan mengganti teks dalam satu bingkai teks individu atau di seluruh presentasi. Kemampuan ini berguna untuk peninjauan, penyensoran, pemeriksaan terminologi, pembersihan templat, dan alur kerja pemrosesan dokumen otomatis lainnya.

Dalam contoh pertama di bawah ini, kami menggunakan file bernama “sample.pptx”, yang berisi satu kotak teks pada slide pertama dengan teks berikut:

Teks contoh

Pilih Lingkup Pencarian

Gunakan metode pada TextFrame untuk membatasi operasi ke satu bingkai teks. Gunakan metode pada Presentation untuk memproses semua teks yang relevan dalam presentasi.

Operasi Satu bingkai teks Seluruh presentasi
Sorot teks literal TextFrame.highlight_text Presentation.highlight_text
Sorot kecocokan ekspresi reguler TextFrame.highlight_regex Presentation.highlight_regex
Ganti teks literal TextFrame.replace_text Presentation.replace_text
Ganti kecocokan ekspresi reguler TextFrame.replace_regex Presentation.replace_regex

Konfigurasikan Pencocokan Teks

Untuk operasi teks literal, gunakan TextSearchOptions untuk mengontrol pencocokan:

Operasi ekspresi reguler menggunakan string pola, sehingga aturan pencocokan seperti sensitivitas huruf dan batas kata didefinisikan oleh ekspresi tersebut.

Sorot Teks

Gunakan metode TextFrame.highlight_text untuk menyorot kecocokan teks literal dalam sebuah bingkai teks. Berikan TextSearchOptions untuk mengontrol pencarian.

Contoh kode di bawah ini menyorot semua kemunculan karakter “try” dan kemudian menyorot hanya kata lengkap “to”.

import aspose.pydrawing as draw
import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes[0]

    substring_search_options = slides.TextSearchOptions()
    substring_search_options.case_sensitive = False

    # Sorot setiap kemunculan "try" dalam bingkai teks.
    shape.text_frame.highlight_text(
        "try", draw.Color.light_blue, substring_search_options, None
    )

    whole_word_search_options = slides.TextSearchOptions()
    whole_word_search_options.whole_words_only = True
    whole_word_search_options.case_sensitive = False

    # Sorot hanya kata lengkap "to".
    shape.text_frame.highlight_text(
        "to", draw.Color.violet, whole_word_search_options, None
    )

    presentation.save("highlighted_text.pptx", slides.export.SaveFormat.PPTX)

Hasilnya:

Teks yang disorot

Sorot Teks Menggunakan Ekspresi Reguler

Metode TextFrame.highlight_regex menyorot kecocokan teks yang ditemukan oleh ekspresi reguler dalam sebuah bingkai teks.

Kode berikut menyorot semua kata yang mengandung tujuh atau lebih karakter:

import aspose.pydrawing as draw
import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes[0]
    word_pattern = r"\b[^\s]{7,}\b"

    shape.text_frame.highlight_regex(word_pattern, draw.Color.yellow, None)

    presentation.save(
        "highlighted_text_using_regex.pptx", slides.export.SaveFormat.PPTX
    )

Hasilnya:

Teks yang disorot menggunakan ekspresi reguler

Sorot Teks di Seluruh Presentasi

Gunakan Presentation.highlight_text dan Presentation.highlight_regex untuk mencari semua bingkai teks yang relevan dalam sebuah presentasi. Contoh berikut menyorot istilah literal dan semua alamat email:

import aspose.pydrawing as draw
import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    search_options = slides.TextSearchOptions()
    search_options.whole_words_only = True
    search_options.case_sensitive = False

    presentation.highlight_text(
        "confidential", draw.Color.orange, search_options, None
    )

    email_pattern = r"(?i)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b"
    presentation.highlight_regex(email_pattern, draw.Color.yellow)

    presentation.save(
        "highlighted_presentation.pptx", slides.export.SaveFormat.PPTX
    )

Ganti Teks dalam Bingkai Teks

Gunakan TextFrame.replace_text untuk teks literal dan TextFrame.replace_regex untuk penggantian berbasis pola. Metode ini memperbarui teks yang cocok di dalam bingkai teks yang ada, mempertahankan pemformatan bagian sekitarnya alih-alih membangun kembali bingkai teks dari string biasa.

Contoh berikut menstandarkan varian ejaan dan kemudian mengganti label versi:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes[0]

    search_options = slides.TextSearchOptions()
    search_options.whole_words_only = True
    search_options.case_sensitive = False

    shape.text_frame.replace_text(
        "colour", "color", search_options, None
    )

    version_pattern = r"(?i)\bv\d+(?:\.\d+)*\b"
    shape.text_frame.replace_regex(version_pattern, "current version")

    presentation.save(
        "updated_text_frame.pptx", slides.export.SaveFormat.PPTX
    )

Jika satu kecocokan meliputi bagian dengan pemformatan berbeda, tinjau output untuk memastikan pemformatan mana yang harus diterapkan pada teks pengganti.

Ganti Teks di Seluruh Presentasi

Gunakan Presentation.replace_text dan Presentation.replace_regex untuk menerapkan operasi yang sama di seluruh presentasi. Ini berguna untuk pembersihan templat, pembaruan terminologi, dan penyensoran.

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    search_options = slides.TextSearchOptions()
    search_options.whole_words_only = True
    search_options.case_sensitive = True

    presentation.replace_text(
        "Contoso", "Example Corp", search_options, None
    )

    account_number_pattern = r"\bACCT-\d{6}\b"
    presentation.replace_regex(account_number_pattern, "ACCT-REDACTED")

    presentation.save(
        "updated_presentation.pptx", slides.export.SaveFormat.PPTX
    )

FAQ

Bagaimana saya dapat mencari hanya satu kotak teks alih-alih seluruh presentasi?

Dapatkan bingkai teks dari shape dan panggil TextFrame.highlight_text, TextFrame.highlight_regex, TextFrame.replace_text, atau TextFrame.replace_regex pada bingkai teks tersebut. Metode tingkat presentasi memproses semua bingkai teks yang relevan.

Bagaimana saya dapat mencocokkan kata lengkap dengan kapitalisasi yang tepat?

Setel TextSearchOptions.whole_words_only dan TextSearchOptions.case_sensitive ke True, dan berikan opsi tersebut ke metode penyorotan atau penggantian teks literal. Untuk ekspresi reguler, definisikan batas kata dan sensitivitas huruf dalam pola itu sendiri.

Apakah pencarian dan penggantian dapat menyertakan teks dalam catatan slide?

Ya. Setel TextSearchOptions.include_notes ke True saat menggunakan operasi teks literal tingkat presentasi.

Apakah mengganti teks mempertahankan formatnya?

TextFrame.replace_text dan TextFrame.replace_regex memodifikasi teks yang cocok di dalam bingkai teks yang ada dan mempertahankan pemformatan bagian sekitarnya. Jika satu kecocokan meliputi bagian dengan pemformatan berbeda, periksa hasilnya untuk memastikan penggantian menggunakan gaya yang diinginkan.