تجريد الأحرف غير القابلة للطباعة من سلسلة في بايثون
على عكس بيرل، تفتقر بايثون إلى فئات POSIX regex، مما يجعل من الصعب اكتشافها وإزالة الأحرف غير القابلة للطباعة باستخدام التعبيرات العادية.
إذن، كيف يمكنك تحقيق ذلك في بايثون؟
أحد الأساليب هو الاستفادة من وحدة unicodedata. تقوم الدالة unicodedata.category بتصنيف أحرف Unicode إلى فئات مختلفة. على سبيل المثال، تمثل الأحرف المصنفة على أنها نسخة (تحكم) أحرفًا غير قابلة للطباعة.
باستخدام هذه المعرفة، يمكنك إنشاء فئة أحرف مخصصة تتطابق مع جميع أحرف التحكم:
import unicodedata
import re
import sys
all_chars = (chr(i) for i in range(sys.maxunicode))
categories = {'Cc'}
control_chars = ''.join(c for c in all_chars if unicodedata.category(c) in categories)
control_char_re = re.compile('[%s]' % re.escape(control_chars))
def remove_control_chars(s):
return control_char_re.sub('', s)
تقوم هذه الوظيفة بشكل فعال بإزالة جميع أحرف ASCII غير القابلة للطباعة من سلسلة الإدخال.
بدلاً من ذلك، يمكنك استخدام طريقة string.printable المضمنة في Python لتصفية الأحرف غير القابلة للطباعة. ومع ذلك، فإن هذه الطريقة تستثني أحرف Unicode، لذلك قد لا تناسب جميع حالات الاستخدام.
لتعامل مع أحرف Unicode، يمكنك توسيع فئة الأحرف في التعبير العادي على النحو التالي:
control_chars = ''.join(map(chr, itertools.chain(range(0x00,0x20), range(0x7f,0xa0))))
تشمل فئة الأحرف الموسعة هذه أحرف التحكم الأساسية إلى جانب الأحرف غير الشائعة -أحرف Unicode قابلة للطباعة.
من خلال تعديل وظيفة Remove_control_chars وفقًا لذلك، يمكنك التعامل بنجاح مع كل من أحرف ASCII وUnicode غير القابلة للطباعة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3