استبدال السلسلة في Python | استبدال سلسلة Python [2022]
نشرت: 2021-01-02يعد استبدال الأحرف والسلاسل في Python مهمة حاسمة عندما يتعلق الأمر بتنظيف البيانات أو معالجة النص. قد تحتوي بياناتك على مشكلات في التنسيق مع الأحرف غير الصحيحة التي يجب إزالتها ، وقد تواجه الفئات مشكلات في التدقيق الإملائي ، وما إلى ذلك أيضًا أثناء المعالجة المسبقة للنص للمشكلات القائمة على البرمجة اللغوية العصبية ، فإن استبدال السلسلة هو الخطوة الأساسية والأكثر أهمية أثناء إعداد البيانات النصية.
في هذا البرنامج التعليمي ، سنتطرق إلى طرق متعددة لاستبدال أنواع مختلفة من السلاسل النصية. إذا كنت مهتمًا بالدخول في علم البيانات ، فتحقق من شهادات علوم البيانات لدينا. بنهاية هذا البرنامج التعليمي ، ستكون على دراية بما يلي:
- طريقة استبدال Python ()
- طريقة () Regex الفرعية
- انضم () وفلتر ()
- استبدال البيانات الرقمية في السلاسل
جدول المحتويات
استبدال بايثون ()
تتكون طريقة الاستبدال (old_str ، new_str ، count) من 3 وسيطات:
- old_str: السلسلة أو جزء من السلسلة التي يجب استبدالها
- new_str: السلسلة التي يجب استبدال السلسلة القديمة بها
- count: عدد المرات التي تحتاج فيها السلسلة المعينة إلى الاستبدال
لنستعرض بعض الأمثلة لفهم طريقة العمل.
استبدال واحد
Mystr = "هذه سلسلة نموذجية" Newstr = Mystr.replace ( 'is' ، 'was' ) |
#انتاج: كانت عبارة عن سلسلة عينة |
إذا كنت تتذكر ، فإن الجمل في بايثون غير قابلة للتغيير. لذلك عندما نطلق على طريقة الاستبدال ، فإنها تقوم بشكل أساسي بعمل كائن سلسلة آخر بالبيانات المعدلة. علاوة على ذلك ، لم نحدد معامل العدد في المثال أعلاه. إذا لم يتم تحديده ، فإن طريقة الاستبدال ستحل محل جميع تكرارات السلسلة.
استبدال متعدد
Mystr = "هذه سلسلة نموذجية" Newstr = Mystr.replace ( "s" ، "X" ) |
#انتاج: ThiX iX a Xample Xtring |
استبدال متعدد أول n تكرارات
إذا كنت تريد فقط تكرارات N الأولى ،
Mystr = "هذه سلسلة نموذجية" Newstr = Mystr.replace ( "s" ، "X" ، 3 ) |
#انتاج: ThiX iX سلسلة Xample |
استبدال السلاسل المتعددة
في الأمثلة أعلاه ، استبدلنا سلسلة واحدة بعدد مختلف من المرات. الآن ماذا لو كنت تريد استبدال سلاسل مختلفة في نفس السلسلة الكبيرة. يمكننا كتابة دالة فعالة لها وإنجازها بنفس الطريقة.
ضع في اعتبارك المثال أعلاه ، ولكننا نريد الآن استبدال "h" و "is" و "ng" بـ "X".
def MultipleStrings (mainStr، strReplaceList، newStr) : # التكرار على الأوتار المراد استبدالها لعنصر في strReplaceList : _ # التحقق مما إذا كانت السلسلة في السلسلة الرئيسية إذا إلم في mainStr: # استبدل السلسلة mainStr = mainStr.replace (elem ، newStr) عودة mainStr |
Mystr = "هذه سلسلة نموذجية" Newstr = سلاسل متعددة (Mystr، [ 'h' ، 'is' ، 'ng' ]، “X” ) |
#انتاج: TXX X عينة ستراكس |
قراءة: دروس بايثون
الاستبدال بـ regex
Regex Python عبارة عن وحدة نمطية مخصصة للتعامل مع البيانات النصية - سواء كان ذلك للعثور على سلاسل فرعية أو استبدال السلاسل أو أي شيء. Regex لها الوظيفة الفرعية () للعثور على السلاسل الفرعية واستبدالها / استبدالها بسهولة. لنستعرض تركيبه وعدد قليل من حالات الاستخدام.
تأخذ الدالة regex.sub (النمط ، الاستبدال ، original_string) 3 وسيطات:
- النمط: السلسلة الفرعية التي يجب مطابقتها واستبدالها.
- الاستبدال: يمكن أن تكون سلسلة يجب وضعها في مكانها ، أو دالة قابلة للاستدعاء تُرجع القيمة التي يجب وضعها في مكانها الصحيح.
- original_string: السلسلة الرئيسية التي يجب استبدال السلسلة الفرعية فيها.
تمامًا مثل طريقة الاستبدال ، يُنشئ regex أيضًا كائن سلسلة آخر بالسلسلة المعدلة. لنستعرض بعض الأمثلة العملية.
إزالة المسافة البيضاء
يمكن معاملة المسافات البيضاء كأحرف خاصة واستبدالها بأحرف أخرى. في المثال أدناه ، نعتزم استبدال المسافات البيضاء بـ "X".
إعادة الاستيراد Mystr = "هذه سلسلة نموذجية" # استبدل جميع المسافات البيضاء في Mystr بـ "X" Newstr = re.sub ( r ”\ s +” ، 'X' ، Mystr) |
#انتاج: هذا XisXaXsampleXstring |
كما نرى ، تم استبدال كل المسافات. النمط مُعطى بواسطة r ”\ s +” مما يعني كل أحرف المسافات البيضاء.
إزالة كافة الأحرف الخاصة
لإزالة جميع الأحرف الخاصة ، سنمرر نمطًا يتطابق مع جميع الأحرف الخاصة.
إعادة الاستيراد سلسلة الاستيراد Mystr = "Tempo& [(000)] ٪٪ $66isit $$ # $٪ - + Str" نمط = r '[' + string.punctuation + ']' # استبدل جميع الأحرف الخاصة في سلسلة بـ X Newstr = re.sub (نمط، 'X' ، Mystr) |

#انتاج: TempoXXXXX000XXXXXXX66 زيارةXXXXXXXStr |
إزالة السلسلة الفرعية باعتبارها غير حساسة لحالة الأحرف
في بيانات الحياة الواقعية ، قد تكون هناك حالات حيث قد يكون هناك العديد من إصدارات نفس الكلمة بأحرف كبيرة وصغيرة مختلفة. لإزالتها جميعًا ، ضع كل الكلمات بشكل منفصل لأن النمط لن يكون فعالاً. تأخذ الدالة regex sub () العلامة re.IGNORECASE لتجاهل الحالات. دعونا نرى كيف يعمل.
إعادة الاستيراد Mystr = "هذا نموذج Istring" # استبدل السلسلة الفرعية في سلسلة بنهج غير حساس لحالة الأحرف Newstr = re.sub ( r'is ' ، ' ** ' ، Mystr، flags = re.IGNORECASE) |
#انتاج: ال ** ** عينة ** ترينغ |
إزالة عدة أحرف باستخدام regex
يمكن لوظيفة regex إزالة أحرف متعددة من سلسلة بسهولة. أدناه مثال.
إعادة الاستيراد Mystr = "هذه سلسلة نموذجية" نمط = r '[hsa]' # إزالة الأحرف "h" و "s" و "a" من السلسلة Newstr = re.sub (pattern، " ، Mystr) |
#انتاج: تي أنا mple ترينغ |
الاستبدال باستخدام صلة ()
هناك طريقة أخرى لإزالة الأحرف أو استبدالها وهي تكرار السلسلة والتحقق منها مقابل بعض الشروط.
charList = [ 'h' ، 's' ، 'a' ] Mystr = "هذه سلسلة نموذجية" # إزالة جميع الأحرف في القائمة ، من السلسلة Newstr = " .join ((عنصر لـ elem في Mystr إذا لم يكن عنصرًا في charList )) |
#انتاج: تي أنا mple ترينغ |
الاستبدال باستخدام الانضمام () والتصفية ()
يمكن أيضًا عمل المثال أعلاه باستخدام وظيفة التصفية.
Mystr = "هذه سلسلة نموذجية" charList = [ 'h' ، 's' ، 'a' ] # إزالة جميع الأحرف في القائمة ، من السلسلة Newstr = "" .join (filter ( lambda k: k not in charList، Mystr)) |
#انتاج: أنا mple محاولة |
يجب أن تقرأ: تطبيقات بايثون رائعة في العالم الحقيقي
استبدال الأرقام
في كثير من الأحيان ، تكون البيانات الرقمية موجودة أيضًا في السلاسل التي قد تحتاج إلى إزالتها ومعالجتها بشكل منفصل كميزة مختلفة. لنستعرض بعض الأمثلة لنرى كيف يمكن تنفيذها.
استخدام regex
ضع في اعتبارك السلسلة أدناه التي نحتاج إلى إزالة البيانات الرقمية منها.
Mystr = "نموذج سلسلة 9211 لعام 20xx" نمط = r "[0-9]" # تطابق جميع الأرقام في السلسلة واستبدالها بسلسلة فارغة Newstr = re.sub (النمط ، "" ، Mystr) |
#انتاج: سلسلة عينة من العام xx |
في الكود أعلاه ، نستخدم نمط المطابقة r '[0-9]' لمطابقة جميع الأرقام.
استخدام وظيفة الانضمام ()
يمكننا أيضًا التكرار على السلسلة وتصفية الأرقام باستخدام طريقة isdigit () التي ترجع خطأ للأبجديات .
Mystr = "نموذج سلسلة 9211 لعام 20xx" # يتكرر عبر الأحرف الموجودة في السلسلة وينضم إلى جميع الأحرف باستثناء الأرقام Newstr = "" .join ((عنصر للعنصر في Mystr إن لم يكن item.isdigit ())) |
#انتاج: سلسلة عينة من العام xx |
باستخدام الانضمام () والتصفية ()
وبالمثل ، يمكننا أيضًا وضع شرط التصفية في وظيفة التصفية لإرجاع الأحرف التي ترجع True فقط .
Mystr = "نموذج سلسلة 9211 لعام 20xx" # قم بتصفية جميع الأرقام من الأحرف في السلسلة وانضم إلى الأحرف المتبقية Newstr = "" .join (عامل التصفية ( عنصر lambda : not item.isdigit () ، Mystr)) |
#انتاج: سلسلة عينة من العام xx |
قبل ان تذهب
لقد غطينا الكثير من الأمثلة التي توضح طرقًا مختلفة لإزالة أو استبدال الأحرف / المسافات البيضاء / الأرقام من سلسلة. نوصيك بشدة بتجربة المزيد من الأمثلة والطرق المختلفة للقيام بالأمثلة المذكورة أعلاه وأيضًا المزيد من الأمثلة الخاصة بك.
إذا كنت مهتمًا بمعرفة المزيد عن Python وعلوم البيانات ، فراجع برنامج IIIT-B & upGrad's Executive PG في علوم البيانات الذي تم إنشاؤه للمهنيين العاملين ويقدم أكثر من 10 دراسات حالة ومشاريع ، وورش عمل عملية عملية ، وإرشاد مع خبراء الصناعة ، وجهاً لوجه مع موجهين في الصناعة ، وأكثر من 400 ساعة من التعلم والمساعدة في العمل مع الشركات الكبرى.
ما هي الحاجة إلى طريقة استبدال السلسلة في بايثون؟
تصبح هذه الوظيفة مفيدة للغاية عند تطبيق تقنيات تنقية البيانات عليها. يمكن إزالة الأحرف غير الضرورية أو غير المرغوب فيها بسهولة باستخدام هذه الوظيفة. لا يتم استخدام استبدال السلاسل أو الأحرف فقط في تنقية البيانات ولكن أيضًا في معالجة مشكلات البرمجة اللغوية العصبية.
يعد امتلاك هذه الأنواع من الأساليب للتعامل مع السلاسل أمرًا مهمًا لأن مجال علم البيانات بأكمله يتعامل مع أجزاء ضخمة من البيانات.
ما هي مزايا استخدام أنواع بيانات السلسلة؟
تعتبر السلاسل مفيدة حيث يمكنك تخزين كميات كبيرة من البيانات بسهولة باستخدام نوع البيانات هذا. تدعم Python عددًا كبيرًا من الطرق المفيدة لإجراء عمليات على السلاسل. أيضًا ، السلاسل قابلة للتغيير في Python مما يقلل من توليد الخطأ كما أنها أقل تكلفة أيضًا.
السلسلة هي واحدة من أكثر أنواع البيانات المضمنة استخدامًا في Python. ليس فقط في Python ، ولكن العديد من اللغات الأخرى تدعم هذا أيضًا كنوع بيانات محدد مسبقًا وتدعم طرقًا مختلفة للعمل عليها.