اذهب إلى المحتوى

السؤال

نشر

أريد حذف مجموعة من الحروف في سلسلة نصية، جربت هذه الطريقة لكنها طويلة جدا:

string.replace(',', '').replace("!", '').replace(":", '').replace(";", '')...

فهل توجد طريقة أبسط من هذه الطريقة؟ أريد وضع جميع الحروف التي أرغب بحذفها في قائمة بعينة كما في المثال التالي:

list = [',', '!', '.', ';'...]

فكيف أستطيع فعل ذلك؟

Recommended Posts

  • 0
نشر

هنالك طرق مختلفة لحذف مجموعة من الأحرف الموجودة في قائمة معينة فيمكنك أن تستخدم الدالة المدمجة translate كما يظهر في المثال التالي:

>>> chars_to_remove = ['.', '!', '?']
>>> subj = 'A.B!C?'
>>> subj.translate(None, ''.join(chars_to_remove))
'ABC'

حيث أن subj هي السلسلة النصية التي تريد حذف الأحرف منها.
أما الطريقة الثانية فهي عن طريق التكرار على جميع الأحرف الموجودة في سلسلة نصية معينة ومن ثم حذف الحرف إذا كان موجود في قائمة الحروف التي يجب حذفها كما في المثال التالي:

>>> sc = set(chars_to_remove)
>>> ''.join([c for c in subj if c not in sc])
'ABC'

كما يمكنك أيضا إنشاء تعبير نمطي عن طريق استخدام دالة sub من مكتبة re كما في هذا المثال:

>>> import re
>>> rx = '[' + re.escape(''.join(chars_to_remove)) + ']'
>>> re.sub(rx, '', subj)
'ABC'

المصدر

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...