"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إزالة الأحرف غير القابلة للطباعة من السلاسل في بايثون؟

كيفية إزالة الأحرف غير القابلة للطباعة من السلاسل في بايثون؟

تم النشر بتاريخ 2024-11-09
تصفح:675

How to Remove Non-Printable Characters from Strings in Python?

تجريد الأحرف غير القابلة للطباعة من سلسلة في بايثون

على عكس بيرل، تفتقر بايثون إلى فئات 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 غير القابلة للطباعة.

بيان الافراج أعيد طبع هذه المقالة على: 1729551315 في حالة وجود أي مخالفة، يرجى التواصل مع [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3