• 0

كيف أستبدل جميع الحروف غير آسكي بفراغ في بايثون؟

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

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) 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

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

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

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

re.sub(r'[^\x00-\x7F]+',' ', text)
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن