البحث واستبدال النص في عروض PowerPoint التقديمية باستخدام بايثون
نظرة عامة
Aspose.Slides for Python via .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 للتحكم في المطابقة:
- TextSearchOptions.whole_words_only يحدّ المطابقات إلى الكلمات الكاملة.
- TextSearchOptions.case_sensitive يتحكم فيما إذا كان يجب مطابقة حالة الأحرف.
- TextSearchOptions.include_notes يشمل ملاحظات الشرائح في عمليات البحث والاستبدال والتمييز على مستوى العرض التقديمي.
تستخدم عمليات التعابير النمطية سلسلة نمط، لذا تُحدَّد قواعد المطابقة مثل حساسية الحالة وحدود الكلمات داخل التعبير نفسه.
تمييز النص
استخدم طريقة 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 للبحث في جميع إطارات النص القابلة للتطبيق في العرض التقديمي. المثال التالي يبرز مصطلحًا حرفيًا وجميع عناوين البريد الإلكتروني:
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 يغيّران النص المطابق داخل إطار النص الحالي ويحتفظان بتنسيق الجزء المحيط. إذا امتدت المطابقة على أجزاء ذات تنسيقات مختلفة، راجع النتيجة للتأكد من أن الاستبدال يستخدم النمط المطلوب.