Vyhledávání a nahrazování textu v prezentacích PowerPoint v Pythonu

Přehled

Aspose.Slides pro Python pomocí .NET dokáže vyhledávat, zvýrazňovat a nahrazovat text v jednotlivém textovém rámci nebo v celé prezentaci. Tyto funkce jsou užitečné při revizi, redakci, kontrole terminologie, úklidu šablon a dalších automatizovaných pracovních tocích zpracování dokumentů.

V prvních ukázkách níže používáme soubor s názvem “sample.pptx”, který obsahuje jediný textový rámeček na první slide s následujícím textem:

Ukázkový text

Zvolte oblast hledání

Použijte metody na TextFrame k omezení operace na jeden textový rámec. Použijte metody na Presentation k zpracování veškerého relevantního textu v prezentaci.

Operace Jeden textový rámec Celá prezentace
Zvýraznit doslovný text TextFrame.highlight_text Presentation.highlight_text
Zvýraznit shody regulárního výrazu TextFrame.highlight_regex Presentation.highlight_regex
Nahradit doslovný text TextFrame.replace_text Presentation.replace_text
Nahradit shody regulárního výrazu TextFrame.replace_regex Presentation.replace_regex

Nastavení porovnávání textu

Pro operace s doslovným textem použijte TextSearchOptions k řízení porovnávání:

Operace s regulárním výrazem používají řetězec vzoru, takže pravidla porovnání, jako je citlivost na velikost písmen a hranice slov, jsou definována výrazem.

Zvýraznění textu

Použijte metodu TextFrame.highlight_text k zvýraznění doslovných shod v textovém rámci. Předávejte TextSearchOptions pro řízení vyhledávání.

Příklad kódu níže zvýrazní všechny výskyty znaků “try” a poté zvýrazní pouze celé slovo “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

    # Zvýraznit každý výskyt "try" v textovém rámci.
    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

    # Zvýraznit pouze celé slovo "to".
    shape.text_frame.highlight_text(
        "to", draw.Color.violet, whole_word_search_options, None
    )

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

Výsledek:

Zvýrazněný text

Zvýraznění textu pomocí regulárních výrazů

Metoda TextFrame.highlight_regex zvýrazní shody textu nalezené regulárním výrazem v textovém rámci.

Následující kód zvýrazní všechna slova obsahující sedm a více znaků:

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
    )

Výsledek:

Zvýrazněný text pomocí regulárního výrazu

Zvýraznění textu v celé prezentaci

Použijte Presentation.highlight_text a Presentation.highlight_regex k prohledání všech relevantních textových rámců v prezentaci. Následující příklad zvýrazní doslovný termín a všechny e‑mailové adresy:

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
    )

Nahrazení textu v textovém rámci

Použijte TextFrame.replace_text pro doslovný text a TextFrame.replace_regex pro náhradu založenou na vzoru. Tyto metody aktualizují odpovídající text v existujícím textovém rámci, přičemž zachovávají formátování okolních částí místo přestavby celého rámce z prostého řetězce.

Následující příklad standardizuje variantu pravopisu a poté nahradí označení verzí:

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
    )

Pokud jedna shoda zahrnuje části s odlišným formátováním, zkontrolujte výstup, abyste potvrdili, které formátování by mělo být použito pro nahrazený text.

Nahrazení textu v celé prezentaci

Použijte Presentation.replace_text a Presentation.replace_regex k provedení stejných operací v celé prezentaci. To je užitečné při úklidu šablon, aktualizacích terminologie a redakci.

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
    )

Často kladené otázky

Jak mohu vyhledávat pouze jeden textový rámeček místo celé prezentace?

Získejte textový rámec tvaru a zavolejte na tomto rámci metodu TextFrame.highlight_text, TextFrame.highlight_regex, TextFrame.replace_text nebo TextFrame.replace_regex . Metody na úrovni prezentace zpracovávají všechny relevantní textové rámečky.

Jak mohu shodovat celá slova s správnou kapitalizací?

Nastavte TextSearchOptions.whole_words_only a TextSearchOptions.case_sensitive na True a předávejte tyto možnosti metodě pro zvýraznění nebo nahrazení doslovného textu. U regulárních výrazů definujte hranice slov a citlivost na velikost písmen přímo ve vzoru.

Může vyhledávání a nahrazování zahrnovat text v poznámkách ke snímkům?

Ano. Nastavte TextSearchOptions.include_notes na True při použití operace doslovného textu na úrovni prezentace.

Zachovává nahrazování textu jeho formátování?

TextFrame.replace_text a TextFrame.replace_regex upravují odpovídající text v existujícím textovém rámci a zachovávají formátování okolních částí. Pokud jedna shoda zahrnuje části s různým formátováním, prohlédněte výsledek, aby bylo zajištěno, že nahrazený text používá požadovaný styl.