Cerca e sostituisci testo nelle presentazioni PowerPoint in Python

Panoramica

Aspose.Slides per Python via .NET può cercare, evidenziare e sostituire testo in un singolo frame di testo o in un’intera presentazione. Queste funzionalità sono utili per la revisione, la redazione, il controllo della terminologia, la pulizia dei modelli e altri flussi di lavoro automatizzati di elaborazione dei documenti.

Nei primi esempi seguenti, utilizziamo un file chiamato “sample.pptx”, che contiene una singola casella di testo nella prima diapositiva con il seguente testo:

Testo di esempio

Scegli l’ambito di ricerca

Utilizza i metodi su TextFrame per limitare un’operazione a un singolo frame di testo. Utilizza i metodi su Presentation per elaborare tutto il testo applicabile nella presentazione.

Operazione Un frame di testo Intera presentazione
Evidenzia testo letterale TextFrame.highlight_text Presentation.highlight_text
Evidenzia corrispondenze di espressione regolare TextFrame.highlight_regex Presentation.highlight_regex
Sostituisci testo letterale TextFrame.replace_text Presentation.replace_text
Sostituisci corrispondenze di espressione regolare TextFrame.replace_regex Presentation.replace_regex

Configura il confronto del testo

Per le operazioni su testo letterale, utilizza TextSearchOptions per controllare il confronto:

Le operazioni con espressioni regolari usano una stringa di pattern, quindi le regole di corrispondenza come la sensibilità al caso e i confini di parola sono definiti dall’espressione.

Evidenzia testo

Utilizza il metodo TextFrame.highlight_text per evidenziare le corrispondenze di testo letterale in un frame di testo. Passa TextSearchOptions per controllare la ricerca.

L’esempio di codice seguente evidenzia tutte le occorrenze dei caratteri “try” e poi evidenzia solo la parola completa “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

    # Evidenzia ogni occorrenza di "try" nel frame di testo.
    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

    # Evidenzia solo la parola completa "to".
    shape.text_frame.highlight_text(
        "to", draw.Color.violet, whole_word_search_options, None
    )

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

Il risultato:

Il testo evidenziato

Evidenzia testo usando espressioni regolari

Il metodo TextFrame.highlight_regex evidenzia le corrispondenze di testo trovate da un’espressione regolare in un frame di testo.

Il codice seguente evidenzia tutte le parole contenenti sette o più caratteri:

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
    )

Il risultato:

Il testo evidenziato usando l’espressione regolare

Evidenzia testo nell’intera presentazione

Utilizza Presentation.highlight_text e Presentation.highlight_regex per cercare tutti i frame di testo applicabili in una presentazione. Il seguente esempio evidenzia un termine letterale e tutti gli indirizzi 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
    )

Sostituisci testo in un frame di testo

Usa TextFrame.replace_text per testo letterale e TextFrame.replace_regex per sostituzioni basate su pattern. Questi metodi aggiornano il testo corrispondente all’interno del frame di testo esistente, mantenendo la formattazione della parte circostante invece di ricostruire il frame di testo da una stringa semplice.

Il seguente esempio standardizza una variante ortografica e poi sostituisce le etichette di versione:

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
    )

Se una corrispondenza copre parti con formattazioni diverse, verifica l’output per confermare quale formattazione dovrebbe essere applicata al testo sostituito.

Sostituisci testo nell’intera presentazione

Utilizza Presentation.replace_text e Presentation.replace_regex per applicare le stesse operazioni all’intera presentazione. Questo è utile per la pulizia dei modelli, gli aggiornamenti di terminologia e la redazione.

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

Come posso cercare solo una casella di testo invece dell’intera presentazione?

Ottieni il frame di testo della forma e chiama TextFrame.highlight_text, TextFrame.highlight_regex, TextFrame.replace_text, o TextFrame.replace_regex su quel frame di testo. I metodi a livello di presentazione elaborano tutti i frame di testo applicabili.

Come posso corrispondere parole complete con la corretta capitalizzazione?

Imposta TextSearchOptions.whole_words_only e TextSearchOptions.case_sensitive su True e passa le opzioni a un metodo di evidenziazione o sostituzione di testo letterale. Per le espressioni regolari, definisci i confini di parola e la sensibilità al caso direttamente nel pattern.

La ricerca e la sostituzione possono includere il testo nelle note delle diapositive?

Sì. Imposta TextSearchOptions.include_notes su True quando utilizzi un’operazione di testo letterale a livello di presentazione.

La sostituzione del testo ne conserva la formattazione?

TextFrame.replace_text e TextFrame.replace_regex modificano il testo corrispondente all’interno del frame di testo esistente e mantengono la formattazione della parte circostante. Se una corrispondenza copre parti con formattazioni diverse, ispeziona il risultato per assicurarti che la sostituzione utilizzi lo stile desiderato.