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

السؤال

نشر

لدي نص كالتالي:

x= """Bound methods have been "bound" (how descriptive) to an instance, what about that?!"""

كيف أقوم باستخراج الكلمات فقط بدون باقي علامات التنصيص والاستفهام وغيرها من رومز؟

حاولت أن استخدم التابع replace لحذف هذه العلامات، لكن أخشى أن يقوم المستخدم بإدخال رموز مختلفة أو رموز Emoji، وبالتالي سيكون من المستحيل إزالة كل الرموز الغريبة من النص قبل تقسيمه لكلمات باستخدام التابع split. هل توجد طريقة سريعة لإستخراج الكلمات فقط من النص؟

Recommended Posts

  • 0
نشر

يمكنك إستخدام Regular Expressions بحيث تجد جميع الأحرف كمصفوفة و من ثم تقوم بتحويل هذه المصفوفة الى string و بطريقة سلهة جدا كالتالي 

import re
word1 = " ".join(re.findall("[a-zA-Z]+", st))

و إن أردت أيضا الأرقام فيمكنك إضافة 0-9 داخل الأقواس فيتم جلب الأرقام أيضا 

  • 1
نشر

يمكنك إستخدام عدة طرق للحصول على النتيجة المرغوبة ، يمكنك إستخدام حلقة لتقسيم الكلمات من النص والتأكد بإستخدام ()isalpha وإضافتها الى قائمة كالآتي

s = """Bound methods have been "bound" (how descriptive) to an instance, what about that?!"""
x = []
for i in s.split():
    if i.isalpha():
        x.append(i)
print(x)

أو هذا إستخدام دالة findall من حزمة re

import re

x = """Bound methods have been "bound" (how descriptive) to an instance, what about that?!"""

print(re.findall('[a-z]+', x, flags=re.IGNORECASE))

أو هذا الكود

import re

s = """Bound methods have been "bound" (how descriptive) to an instance, what about that?!"""

print(re.findall(r'(?<!\S)[A-Za-z]+(?!\S)', s))

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...