Wyszukiwanie i zamiana tekstu w prezentacjach PowerPoint w Pythonie

Przegląd

Aspose.Slides for Python via .NET może wyszukiwać, podświetlać i zastępować tekst w pojedynczej ramce tekstowej lub w całej prezentacji. Te możliwości są przydatne przy przeglądzie, redakcji, weryfikacji terminologii, czyszczeniu szablonów oraz innych zautomatyzowanych przepływach przetwarzania dokumentów.

W pierwszych przykładach poniżej używamy pliku o nazwie “sample.pptx”, który zawiera pojedyncze pole tekstowe na pierwszym slajdzie z następującym tekstem:

Przykładowy tekst

Wybierz zakres wyszukiwania

Użyj metod na TextFrame, aby ograniczyć operację do jednej ramki tekstowej. Użyj metod na Presentation, aby przetworzyć cały odpowiedni tekst w prezentacji.

Operacja Jedna ramka tekstowa Cała prezentacja
Podświetl dosłowny tekst TextFrame.highlight_text Presentation.highlight_text
Podświetl dopasowania wyrażenia regularnego TextFrame.highlight_regex Presentation.highlight_regex
Zastąp dosłowny tekst TextFrame.replace_text Presentation.replace_text
Zastąp dopasowania wyrażenia regularnego TextFrame.replace_regex Presentation.replace_regex

Skonfiguruj dopasowywanie tekstu

Dla operacji na dosłownym tekście użyj TextSearchOptions, aby kontrolować dopasowanie:

Operacje wyrażenia regularnego używają ciągu wzorca, więc reguły dopasowywania, takie jak rozróżnianie wielkości liter i granice wyrazów, są definiowane w wyrażeniu.

Podświetl tekst

Użyj metody TextFrame.highlight_text, aby podświetlić dopasowania dosłownego tekstu w ramce tekstowej. Przekaż TextSearchOptions, aby kontrolować wyszukiwanie.

Poniższy przykład kodu podświetla wszystkie wystąpienia znaków “try” oraz następnie podświetla tylko pełny wyraz “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

    # Podświetl każde wystąpienie "try" w ramce tekstowej.
    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

    # Podświetl tylko pełny wyraz "to".
    shape.text_frame.highlight_text(
        "to", draw.Color.violet, whole_word_search_options, None
    )

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

Wynik:

Podświetlony tekst

Podświetl tekst przy użyciu wyrażeń regularnych

Metoda TextFrame.highlight_regex podświetla dopasowania tekstu znalezione przy pomocy wyrażenia regularnego w ramce tekstowej.

Poniższy kod podświetla wszystkie słowa zawierające co najmniej siedem znaków:

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
    )

Wynik:

Podświetlony tekst przy użyciu wyrażenia regularnego

Podświetl tekst w całej prezentacji

Użyj Presentation.highlight_text i Presentation.highlight_regex, aby przeszukać wszystkie odpowiednie ramki tekstowe w prezentacji. Poniższy przykład podświetla dosłowny termin oraz wszystkie adresy e‑mail:

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
    )

Zastąp tekst w ramce tekstowej

Użyj TextFrame.replace_text dla dosłownego tekstu i TextFrame.replace_regex dla zamiany opartej na wzorcu. Metody te aktualizują dopasowany tekst w istniejącej ramce tekstowej, zachowując formatowanie otaczających fragmentów zamiast budować ramkę tekstową od czystego ciągu.

Poniższy przykład ujednolicaja wariant pisowni, a następnie zastępuje etykiety wersji:

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
    )

Jeśli jedno dopasowanie obejmuje fragmenty o różnym formatowaniu, sprawdź wynik, aby potwierdzić, które formatowanie powinno zostać zastosowane do tekstu zastępczego.

Zastąp tekst w całej prezentacji

Użyj Presentation.replace_text i Presentation.replace_regex, aby zastosować te same operacje w całej prezentacji. Jest to przydatne przy czyszczeniu szablonów, aktualizacjach terminologii oraz redakcji.

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

Jak mogę wyszukiwać tylko jedną ramkę tekstową zamiast całej prezentacji?

Uzyskaj ramkę tekstową kształtu i wywołaj TextFrame.highlight_text, TextFrame.highlight_regex, TextFrame.replace_text lub TextFrame.replace_regex na tej ramce. Metody na poziomie prezentacji przetwarzają wszystkie odpowiednie ramki tekstowe.

Jak mogę dopasować pełne wyrazy z poprawną wielkością liter?

Ustaw TextSearchOptions.whole_words_only i TextSearchOptions.case_sensitive na True, a następnie przekaż opcje do metody podświetlania lub zastępowania tekstu dosłownego. Dla wyrażeń regularnych określ granice wyrazów i rozróżnianie wielkości liter w samym wzorcu.

Czy wyszukiwanie i zamiana mogą obejmować tekst w notatkach slajdów?

Tak. Ustaw TextSearchOptions.include_notes na True podczas używania operacji dosłownego tekstu na poziomie prezentacji.

Czy zamiana tekstu zachowuje jego formatowanie?

TextFrame.replace_text i TextFrame.replace_regex modyfikują dopasowany tekst w istniejącej ramce tekstowej i zachowują formatowanie otaczających fragmentów. Jeśli dopasowanie obejmuje fragmenty o różnym formatowaniu, sprawdź wynik, aby upewnić się, że zamiana używa pożądanego stylu.