في كثير من الأحيان نحتاج الى تقسيم السلاسل النصية (split strings) حتى يسهل التعامل معها ويتم تحضيرها وتهيئتها للتحليل، في هذا المقال سوف نستعرض بعض الدوال المناسبة لعمل ذلك في لغة البرمجة بايثون وطريقة عملها:
اولاً: تقسم سلسلة وفق محدد معين
str.split(sep, maxsplit)
حيث أن:
str | السلسلة النصية المراد تقسيمها. |
sep | المحدد الذي سوف يتم التقسيم وفقاً له. |
maxsplit | الحد الأقصى للتقسيمات. |
ويمكن توضيح ذلك من خلال المثال التالي:
In: info= "محمد عبدالله العلي يسكن في شارع 22" info.split(' ',1) Out: ['محمد', 'عبدالله العلي يسكن في شارع 22']
كذلك يمكن عدم تحديد عدد التقسيمات:
In: info.split(' ') Out: ['محمد', 'عبدالله', 'العلي', 'يسكن', 'في', 'شارع', '22']
ويمكن استخدام اي من التقسيمات كما يلي:
In: firstname=info.split(' ')[0] firstname Out: 'محمد'
ويمكن اختيار أي محدد، مثلا:
In: address=info.split('يسكن في')[1] address Out: ' شارع 22'
ثانياً: تقسيم السلسلة وفق نمط محدد
re.split(pattern, string, maxsplit, ...)
حيث أن:
pattern | النمط الذي سوف يتم التقسيم وفقاً له. |
string | السلسلة النصية المراد تقسيمها. |
maxsplit | الحد الأقصى للتقسيمات. |
ويمكن توضيح ذلك من خلال المثال التالي:
In: import re re.split(r'(\d+)',info) Out: ['محمد عبدالله العلي يسكن في شارع ', '22', '']
حيث تم استخدام النمط:
r'(\d+)’
والذي يمثل عدد صحيح
ثالثاً: ايجاد جميع تكرارات النمط في السلسلة
re.findall(pattern, string, ...)
حيث أن:
pattern | النمط الذي سوف يتم التقسيم وفقاً له. |
string | السلسلة النصية المراد تقسيمها. |
ويمكن توضيح ذلك من خلال المثال التالي:
In: re.findall(r'[\d+]+.?[\d+]+',info) Out: ['22']
حيث تم استخدام النمط:
r'[\d+]+.?[\d+]+’
والذي يمثل عدد صحيح أو عشري