الإزالة الانتقائية للأحرف غير ASCII
غالبًا ما يتضمن العمل مع البيانات النصية الحاجة إلى إزالة الأحرف غير ASCII، مع الحفاظ على رموز معينة مثل المسافات والفترات. على الرغم من أن طرق التصفية الأساسية قد تؤدي إلى إزالة كافة الأحرف غير ASCII، فقد لا يكون هذا أمرًا مرغوبًا فيه في بعض الحالات.
لنأخذ في الاعتبار الكود التالي:
def onlyascii(char):
if ord(char) 127: return ''
else: return char
يزيل هذا الرمز جميع الأحرف ذات قيم ASCII أقل من 48 أو أكبر من 127، مما يؤدي بشكل فعال إلى تجريد النص من أحرف غير ASCII. ومع ذلك، فإنه يزيل أيضًا المسافات (ASCII 32) والنقاط (ASCII 46).
لإزالة الأحرف غير ASCII بشكل انتقائي مع الحفاظ على المسافات والنقاط، يمكننا الاستفادة من وحدة string.printable في بايثون:
import string
printable = set(string.printable)
filtered_data = filter(lambda x: x in printable, data)
تحتوي مجموعة string.printable على جميع الأحرف القابلة للطباعة على النظام، بما في ذلك الأرقام والحروف والرموز والمسافات والنقاط. باستخدام هذه المجموعة كمرشح، يمكننا إزالة جميع الأحرف غير القابلة للطباعة من السلسلة.
على سبيل المثال، إذا كان لدينا السلسلة "some\x00string.with\x15 Funny Characters":
&&& ]s = "some\x00string. with\x15 funny characters"
''.join(filter(lambda x: x in printable, s))
ستكون النتيجة:'somestring. بأحرف مضحكة''somestring. with funny characters'تزيل هذه الطريقة بشكل فعال الأحرف غير ASCII مع الحفاظ على المسافات والنقاط، مما يوفر سلسلة نظيفة لمزيد من المعالجة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3