اذهب إلى المحتوى
  • 0

كيف أقسّم سلسلة نصية في بايثون ؟

ahmed1990

السؤال

أريد أن أقوم بتقسيم السلسلة النصية التالية:

"Hey, you - what are you doing here!?"

لتصبح على هذا الشكل:

['hey', 'you', 'what', 'are', 'you', 'doing', 'here']

لكن دالة str.split() تعمل فقط مع وسيط واحد (argument) فكيف أستطيع التعامل مع الجمل التي بها رموز ؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

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

import re
DATA = "Hey, you - what are you doing here!?"
print re.findall(r"[\w']+", DATA)
# Prints ['Hey', 'you', 'what', 'are', 'you', 'doing', 'here']

كما أنه يوجد حل باستخدام دالة split التي سنقوم فيها بتمرير W+ بطرق مختلفة كمعامل أول، أنظر إلى المثال التالي لتفهم قصدي:

>>> re.split('\W+', 'Words, words, words.')
['Words', 'words', 'words', '']
>>> re.split('(\W+)', 'Words, words, words.')
['Words', ', ', 'words', ', ', 'words', '.', '']
>>> re.split('\W+', 'Words, words, words.', 1)
['Words', 'words, words.']

ويمكنك أيضا استخدام طرق سهلة وتقليدية وغير معقدة لتقسيم السلسلة النصية، فمثلا يمكنك استخدام دالة split() لفصل رموز معينة من السلسلة النصية:

>>> 'a;bcd,ef g'.replace(';',' ').replace(',',' ').split()
['a', 'bcd', 'ef', 'g']

وفي النهاية يمكنك استخدام هذا الحل بدون regex حيث استخدمنا فيه دوال من مكتبة string كما في المثال:

import string
punc = string.punctuation
thestring = "Hey, you - what are you doing here!?"
s = list(thestring)
''.join([o for o in s if not o in punc]).split()

المصدر

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...