"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > بايثون: الاختلافات بين أساليب `.replace()` و`.re.sub()`

بايثون: الاختلافات بين أساليب `.replace()` و`.re.sub()`

تم النشر بتاريخ 2024-08-25
تصفح:391

Python: differences between `.replace()` and `.re.sub()` methods

مقدمة

يتم استخدام كل من الطريقة .replace() والدالة .re.sub() في بايثون لاستبدال أجزاء من السلاسل النصية، لكن لديهم قدرات وحالات استخدام مختلفة. فيما يلي الاختلافات الأساسية بينهما:

  1. الوحدة وسياق الاستخدام:
    • .يستبدل():
      • ينتمي إلى فئة str.
      • تستخدم كطريقة على كائنات السلسلة.
      • بناء الجملة: str.replace(old, new, count=-1)
      • مثال: يؤدي 'hello world'.replace('world', 'Python') إلى 'hello Python'.
  • .re.sub():
    • ينتمي إلى وحدة إعادة (التعبيرات العادية).
    • تستخدم كدالة من الوحدة النمطية re.
    • بناء الجملة: re.sub(pattern, repl, string, count=0, flags=0)
    • مثال: re.sub(r'\bworld\b', 'Python', 'hello World') ينتج عنه 'hello Python'.
  1. مطابقة الأنماط:
    • .يستبدل():
      • يدعم فقط مطابقة السلسلة البسيطة.
      • لا يمكن استخدام التعبيرات العادية أو الأنماط المعقدة.
      • يستبدل كافة تكرارات السلسلة الفرعية إذا لم يتم تحديد العدد.
  • .re.sub():
    • يدعم التعبيرات العادية، مما يسمح بمطابقة الأنماط المعقدة.
    • يمكن المطابقة والاستبدال بناءً على أنماط مثل فئات الأحرف والتكرار والتجمعات.
    • يسمح باستخدام المراجع الخلفية ويمكنه التعامل مع عمليات الاستبدال الأكثر تعقيدًا.
  1. مرونة الاستبدال:
    • .يستبدل():
      • يقتصر على استبدال سلسلة فرعية ثابتة بسلسلة فرعية ثابتة أخرى.
      • لا توجد ميزات استبدال متقدمة مثل مجموعات الالتقاط أو الاستبدالات المشروطة.
  • .re.sub():
    • يسمح بالبدائل الديناميكية باستخدام مجموعات الالتقاط.
    • يمكن أن تشير السلسلة البديلة (repl) إلى المجموعات المتطابقة من النمط.
    • يمكن استخدام وظيفة كبديل، مما يسمح باستبدالات معقدة وديناميكية بناءً على المطابقة.
  1. أداء:
    • .يستبدل():
      • أسرع بشكل عام بالنسبة لعمليات الاستبدال البسيطة لأنها لا تتضمن مطابقة الأنماط.
  • .re.sub():
    • عادةً ما يكون أبطأ من .replace() بسبب الحمل الزائد لمعالجة التعبير العادي.

أمثلة

استخدام .replace():

text = "The quick brown fox jumps over the lazy dog"
result = text.replace("fox", "cat")
print(result)  # Output: The quick brown cat jumps over the lazy dog

استخدام .re.sub():

import re

text = "The quick brown fox jumps over the lazy dog"
pattern = r'\bfox\b'
replacement = "cat"
result = re.sub(pattern, replacement, text)
print(result)  # Output: The quick brown cat jumps over the lazy dog

مثال متقدم مع .re.sub():

import re

text = "The quick brown fox jumps over the lazy dog"
pattern = r'(\b\w \b)'  # Matches each word
replacement = lambda match: match.group(1)[::-1]  # Reverses each matched word
result = re.sub(pattern, replacement, text)
print(result)  # Output: ehT kciuq nworb xof spmuj revo eht yzal god

باختصار، استخدم .replace() لاستبدالات السلسلة الفرعية البسيطة والمباشرة، واستخدم .re.sub() عندما تحتاج إلى قوة ومرونة التعبيرات العادية للبدائل المستندة إلى النمط.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/doridoro/python-differences-between-replace-and-resub-methods-1cfj?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3