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

السؤال

نشر

أريد استبدال المسافات البيضاء بشرطة سفلية _ في نص معين لإنشاء عناوين Slug. لذلك أريد تحويل النص على النحو التالي:

"How can this be achieved" => "How_can_this_be_achieved"

لكن المشكلة أن النص قد يحتوي على مسافات مختلف مثل \n أو \t

أنا أستخدم Python مع جانغو Django. هل يمكن حل ذلك باستخدام regular expressions؟

Recommended Posts

  • 1
نشر

يمكنك أن تقوم بذلك من خلال regular expressions كالتالي:

import re
def makeSlug(myString):
    # قم بإزالة جميع الأحرف بخلاف الكلمات (كل شيء باستثناء الأرقام والحروف)
    myString = re.sub(r"[^\w\s]", '', myString)
    
    # استبدل كل المسافات البيضاء بشرطة سفلية underscore
    myString = re.sub(r"\s+", '_', myString)
    
    return s

print(makeSlug("How can this be achieved"))
# Output: How_can_this_be_achieved

الطريقة السابقة تقوم بإزالة كل الحروف والرموز (ماعدا الأرقام والحروف اللاتينية) وتستبدل كل المسافات بعلامة شرطة سفلية underscore _

كما أن Django يحتوي على دالة slugify بالفعل التي تقوم بعمل عنوان slug من خلال أي نص، على النحو التالي:
 

from django.template.defaultfilters import slugify
slugify("How can this be achieved")	# How-can-this-be-achieved

كما يفضل أن تستخدم الشرطات dashes - لأنه، لفترة طويلة، تعاملت محركات البحث مع الشرطات كفواصل للكلمات، وبذلك تحصل على نتيجة أفضل في عمليات البحث عن كلمات متعددة long keywords.

  • 0
نشر

إضافةً إلى استخدام مكتبة التعابير المنتظمة كما أشار سامح يمكنك القيام بالتالي:

# - توضع ضمن قائمة ثم نعيد تجميعها كلسلسلة بحيث يفصل بينهم tokens للتخلص من الفراغات نقوم بتقسيم السلسلة إلى 
url="How can this be achieved"
"-".join( url.split() )
# How-can-this-be-achieved
# حتى في حالة وجود فراغات متتالية
url="How        can   this be       achieved"
"-".join( url.split() )
# How-can-this-be-achieved

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...