Αναζήτηση και αντικατάσταση κειμένου σε παρουσιάσεις PowerPoint με Python
Επισκόπηση
Το Aspose.Slides για Python μέσω .NET μπορεί να αναζητήσει, να επισημάνει και να αντικαταστήσει κείμενο σε ένα μεμονωμένο πλαίσιο κειμένου ή σε ολόκληρη παρουσίαση. Αυτές οι δυνατότητες είναι χρήσιμες για έλεγχο, διαγραφή, έλεγχο ορολογίας, καθαρισμό προτύπων και άλλες αυτοματοποιημένες ροές εργασίας επεξεργασίας εγγράφων.
Στα πρώτα παραδείγματα παρακάτω, χρησιμοποιούμε ένα αρχείο με όνομα “sample.pptx”, το οποίο περιέχει ένα μόνο πλαίσιο κειμένου στην πρώτη διαφάνεια με το ακόλουθο κείμενο:

Επιλογή Περιοχής Αναζήτησης
Χρησιμοποιήστε τις μεθόδους στο TextFrame για να περιορίσετε μια λειτουργία σε ένα πλαίσιο κειμένου. Χρησιμοποιήστε τις μεθόδους στο Presentation για να επεξεργαστείτε όλο το εφαρμόσιμο κείμενο στην παρουσίαση.
| Λειτουργία | Ένα πλαίσιο κειμένου | Ολόκληρη παρουσίαση |
|---|---|---|
| Επισήμανση κυριολεκτικού κειμένου | TextFrame.highlight_text | Presentation.highlight_text |
| Επισήμανση αντιστοιχίσεων κανονικών εκφράσεων | TextFrame.highlight_regex | Presentation.highlight_regex |
| Αντικατάσταση κυριολεκτικού κειμένου | TextFrame.replace_text | Presentation.replace_text |
| Αντικατάσταση αντιστοιχίσεων κανονικών εκφράσεων | TextFrame.replace_regex | Presentation.replace_regex |
Διαμόρφωση Αντιστοίχισης Κειμένου
Για λειτουργίες κυριολεκτικού κειμένου, χρησιμοποιήστε το TextSearchOptions για να ελέγξετε την αντιστοίχιση:
whole_words_onlyπεριορίζει τις αντιστοιχίες σε πλήρεις λέξεις.case_sensitiveελέγχει εάν η περίπτωση των χαρακτήρων πρέπει να ταιριάζει.include_notesσυμπεριλαμβάνει τις σημειώσεις διαφάνειας στην αναζήτηση, αντικατάσταση και επισήμανση σε επίπεδο παρουσίασης.
Οι λειτουργίες με κανονικές εκφράσεις χρησιμοποιούν μια συμβολοσειρά προτύπου, έτσι οι κανόνες αντιστοίχισης όπως η ευαισθησία πεζών‑κεφαλαίων και τα όρια λέξεων ορίζονται από την έκφραση.
Αναγνώριση Ιδιοκτήτη Πλαισίου Κειμένου
Οι γενικές ροές επεξεργασίας κειμένου συχνά λαμβάνουν ένα TextFrame κατά την αναζήτηση, αντικατάσταση, επικύρωση ή εξαγωγή κειμένου. Χρησιμοποιήστε τα TextFrame.parent_shape και TextFrame.parent_cell για να προσδιορίσετε ποιο αντικείμενο παρουσίασης κατέχει το πλαίσιο κειμένου.
Οι αναμενόμενες τιμές εξαρτώνται από τον ιδιοκτήτη:
| Ιδιοκτήτης πλαισίου κειμένου | parent_shape |
parent_cell |
|---|---|---|
| Ένα AutoShape ή άλλο σχήμα που περιέχει κείμενο | Το ιδιοκτησιακό Shape | None |
| Ένα κελί πίνακα | None |
Το ιδιοκτησιακό Cell |
Και οι δύο ιδιότητες είναι μόνο για ανάγνωση. Η ανάγνωσή τους δεν μετακινεί το πλαίσιο κειμένου ούτε αλλάζει τον ιδιοκτήτη του. Ο γενικός κώδικας πρέπει να ελέγχει και τις δύο τιμές για None και να διαχειρίζεται την πιθανότητα να μην είναι διαθέσιμος κανένας ιδιοκτήτης.
Το παρακάτω παράδειγμα χρησιμοποιεί το SlideUtil.get_all_text_frames για να επαναλάβει τα πλαίσια κειμένου σε μια παρουσίαση. Για σχήματα, αναφέρει το όνομα του σχήματος, τον τύπο χρόνου εκτέλεσης Python και τη διαφάνεια που το περιέχει. Για κελιά πίνακα, αναφέρει τις συντεταγμένες στήλης και σειράς με βάση το μηδέν και τη διαφάνεια που το περιέχει.
import aspose.slides as slides
def get_slide_label(base_slide):
if isinstance(base_slide, slides.Slide):
return f"slide {base_slide.slide_number}"
if isinstance(base_slide, slides.NotesSlide):
return f"notes for slide {base_slide.parent_slide.slide_number}"
return type(base_slide).__name__
with slides.Presentation("presentation.pptx") as presentation:
text_frames = slides.util.SlideUtil.get_all_text_frames(presentation, False)
for text_frame in text_frames:
owner_shape = text_frame.parent_shape
if owner_shape is not None:
shape_name = owner_shape.name or "(unnamed)"
shape_type = type(owner_shape).__name__
slide_label = get_slide_label(owner_shape.slide)
print(f"Shape: {shape_name}; type: {shape_type}; {slide_label}")
continue
owner_cell = text_frame.parent_cell
if owner_cell is not None:
slide_label = get_slide_label(owner_cell.slide)
print(f"Table cell: column {owner_cell.first_column_index}, row {owner_cell.first_row_index}; {slide_label}")
continue
print("The text frame owner is not available as a shape or table cell.")
Για περιεχόμενο SmartArt, επαναλάβετε τα σχήματα στο SmartArtNode.shapes και αποκτήστε πρόσβαση σε κάθε ISmartArtShape.text_frame. Το πλαίσιο κειμένου μπορεί να ανιχνευθεί στο σχετικό του σχήμα μέσω του TextFrame.parent_shape, ενώ το TextFrame.parent_cell είναι None. Επομένως, ο κλάδος σχήματος στο παράδειγμα διαχειρίζεται επίσης κείμενο από κόμβους SmartArt.
Επισήμανση Κειμένου
Χρησιμοποιήστε τη μέθοδο TextFrame.highlight_text για να επισημάνετε κυριολεκτικές αντιστοιχίες κειμένου σε ένα πλαίσιο κειμένου. Περάστε το TextSearchOptions για να ελέγξετε την αναζήτηση.
Το παρακάτω παράδειγμα κώδικα επισημαίνει όλες τις εμφανίσεις των χαρακτήρων “try” και στη συνέχεια επισημαίνει μόνο τη πλήρη λέξη “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
# Επισήμανση κάθε εμφάνισης του "try" στο πλαίσιο κειμένου.
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
# Επισήμανση μόνο της ολόκληρης λέξης "to".
shape.text_frame.highlight_text(
"to", draw.Color.violet, whole_word_search_options, None
)
presentation.save("highlighted_text.pptx", slides.export.SaveFormat.PPTX)
Το αποτέλεσμα:

Επισήμανση Κειμένου Χρησιμοποιώντας Κανονικές Εκφράσεις
Η μέθοδος TextFrame.highlight_regex επισημαίνει τις αντιστοιχίες κειμένου που βρέθηκαν με μια κανονική έκφραση σε ένα πλαίσιο κειμένου.
Ο παρακάτω κώδικας επισημαίνει όλες τις λέξεις που περιέχουν επτά ή περισσότερους χαρακτήρες:
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
)
Το αποτέλεσμα:

Επισήμανση Κειμένου σε Ολόκληρη Παρουσίαση
Χρησιμοποιήστε τα Presentation.highlight_text και Presentation.highlight_regex για να αναζητήσετε όλα τα εφαρμόσιμα πλαίσια κειμένου σε μια παρουσίαση. Το παρακάτω παράδειγμα επισημαίνει έναν κυριολεκτικό όρο και όλες τις διευθύνσεις 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
)
Αντικατάσταση Κειμένου σε Πλαίσιο Κειμένου
Χρησιμοποιήστε το TextFrame.replace_text για κυριολεκτικό κείμενο και το TextFrame.replace_regex για αντικατάσταση βάσει προτύπου. Αυτές οι μέθοδοι ενημερώνουν το ταιριασμένο κείμενο εντός του υπάρχοντος πλαισίου κειμένου, διατηρώντας τη μορφοποίηση του περιβάλλοντος τμήματος αντί να δημιουργούν εκ νέου το πλαίσιο κειμένου από απλό κείμενο.
Το παρακάτω παράδειγμα ενοποιεί μια παραλλαγή ορθογραφίας και στη συνέχεια αντικαθιστά ετικέτες έκδοσης:
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
)
Εάν μια αντιστοιχία καλύπτει τμήματα με διαφορετική μορφοποίηση, ελέγξτε το αποτέλεσμα για να επιβεβαιώσετε ποια μορφοποίηση πρέπει να εφαρμοστεί στο κείμενο αντικατάστασης.
Αντικατάσταση Κειμένου σε Ολόκληρη Παρουσίαση
Χρησιμοποιήστε τα Presentation.replace_text και Presentation.replace_regex για να εφαρμόσετε τις ίδιες λειτουργίες σε όλη την παρουσίαση. Αυτό είναι χρήσιμο για καθαρισμό προτύπων, ενημερώσεις ορολογίας και διαγραφή.
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
)
Συχνές Ερωτήσεις
Πώς μπορώ να αναζητήσω μόνο ένα πλαίσιο κειμένου αντί για ολόκληρη την παρουσίαση;
Πάρτε το πλαίσιο κειμένου του σχήματος και καλέστε TextFrame.highlight_text, TextFrame.highlight_regex, TextFrame.replace_text ή TextFrame.replace_regex σε αυτό το πλαίσιο κειμένου. Οι μέθοδοι σε επίπεδο παρουσίασης επεξεργάζονται όλα τα εφαρμόσιμα πλαίσια κειμένου αντίθετα.
Πώς μπορώ να ταιριάξω πλήρεις λέξεις με τη σωστή κεφαλαιοποίηση;
Ορίστε το TextSearchOptions.whole_words_only και το TextSearchOptions.case_sensitive σε True και περάστε τις επιλογές σε μια μέθοδο επισήμανσης ή αντικατάστασης κυριολεκτικού κειμένου. Για κανονικές εκφράσεις, ορίστε τα όρια λέξεων και την ευαισθησία πεζών‑κεφαλαίων μέσα στο ίδιο το πρότυπο.
Μπορούν η αναζήτηση και η αντικατάσταση να περιλαμβάνουν κείμενο στις σημειώσεις διαφάνειας;
Ναι. Ορίστε το TextSearchOptions.include_notes σε True όταν χρησιμοποιείτε μια λειτουργία κυριολεκτικού κειμένου σε επίπεδο παρουσίασης.
Διατηρεί η αντικατάσταση κειμένου τη διαμόρφωσή του;
Το TextFrame.replace_text και το TextFrame.replace_regex τροποποιούν το ταιριασμένο κείμενο εντός του υπάρχοντος πλαισίου κειμένου και διατηρούν τη μορφοποίηση του περιβάλλοντος τμήματος. Εάν μια αντιστοιχία καλύπτει τμήματα με διαφορετική μορφοποίηση, εξετάστε το αποτέλεσμα για να βεβαιωθείτε ότι η αντικατάσταση χρησιμοποιεί το επιθυμητό στυλ.