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

السؤال

نشر

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

def remove_non_ascii_1(text):
return ''.join(i for i in text if ord(i)<128)

كما جربت هذه الطريقة:

def remove_non_ascii_2(text):
return re.sub(r'[^\x00-\x7F]',' ', text) 

Recommended Posts

  • 0
نشر

هنالك عدة طرق في لغة بايثون لاستبدال حروف غير آسكي، لكني سأشرح وأُصلح الأمثلة التي ذكرتها في سؤالك.
التعبير الذي وضعته في المثال الأول سيقوم بترشيح السلسلة النصية بدلا من الاستبدال، فهو سيحذف جميع حروف غير آسكي كما ذكرت، ولحل هذه المشكلة أنصحك باستخدام تعبير شرطي كما في المثال التالي:

return ''.join([i if ord(i) < 128 else ' ' for i in text])

في المثال السابق سيتم التعامل مع كل حرف على حدة ومن ثم يستبدل الحروف المطلوبة.
أما الخطأ في التعبير النمطي الذي وضعته فهو أنك نسيت وضع + في التعبير كما في المثال التالي حتى تتمكن من الاستبدال:

re.sub(r'[^\x00-\x7F]+',' ', text)

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...