الدالة urllib.parse.quote()‎‎ في بايثون

من موسوعة حسوب


تستبدل الدالة الحروف الخاصة في السلسلة النصية المعطاة باستخدام علامة التهريب ‎%xx.

البنية العامة

urllib.parse.quote(string, safe='/', encoding=None, errors=None)

‎المعاملات

safe

يحدّد هذا المعامل محارف ASCII الإضافية التي يجب على الدالة أن لا تحيطها بعلامات اقتباس. يحمل هذا المعامل القيمة الافتراضية '/'.

string

يمكن أن يكون سلسلة نصية أو كائن bytes.

ملاحظة:

اعتُمد المعيار RFC 3986 عوضًا عن المعيار RFC 2396 لاقتباس سلاسل URL النصية في الإصدار 3.7 من بايثون، وقد أضيف الرمز "~" إلى مجموعة المحارف المحجوزة.

encoding و errors

يحدّد هذان المعاملان طريقة تعامل الدالة مع الحروف الخارجة عن الترميز ASCII، وكما هو مقبول في التابع str.encode()‎. يأخذ المعامل encoding القيمة الافتراضية 'utf-8'، أما المعامل errors فيأخذ القيمة الافتراضية 'strict' والتي تعني أنّ الحروف غير المدعومة ستتسبب في إطلاق الاستثناء UnicodeEncodeError. يجب عدم إعطاء قيمة للمعاملين encoding و errors إن كانت السلسلة النصية المعطاة من نوع bytes وإلا فإنّ الدالة ستُطلق الاستثناء TypeError.

يجدر التنبيه إلى أنّ الدالة quote(string, safe, encoding, errors)‎ مكافئة للدالة quote_from_bytes(string.encode(encoding, errors), safe)‎.

أمثلة

يبين المثال التالي طريقة عمل الدالة:

>>> import urllib.parse
>>> urllib.parse.quote('/El Niño/')
'/El%20Ni%C3%B1o/'

انظر أيضًا

  • الدالة urllib.parse.quote_plus()‎: هذه الدالة مشابهة للدالة quote()‎ ولكنّها تستبدل المسافات الفارغة بعلامات +.
  • الدالة urllib.parse.quote_from_bytes(): تشبه هذه الدالة الدالة quote()‎ ولكنّها تستقبل كائنات bytes عوضًا عن كائنات str، ولا تؤدي عمليات الترميز من السلاسل النصية إلى البايتات. الدالة urllib.parse.unquote(): تحوّل الدالة الحروف المهرّبة بالصيغة ‎%xx إلى الحروف الأصلية المكافئة لها.
  • الدالة urllib.parse.unquote_plus(): هذه الدالة مشابهة للدالة unquote()‎ ولكنّها تستبدل علامات + بالمسافات البيضاء، وهذا هو المطلوب عند إلغاء الاقتباس من قيم نماذج HTML.
  • الدالة urllib.parse.unquote_to_bytes()‎: تحول الدالة الحروف المهرّبة بالصيغة ‎%xx إلى القيمة الثمانية المفردة المقابلة لها، وتعيد كائن bytes.
  • الدالة urllib.parse.urlencode(): تحوّل الدالة كائن ربط mapping object أو تسلسلًا من صفوف ذات عنصرين، والتي قد تحتوي على كائنات str أو bytes إلى سلسلة نصية مرمّزة بالنسبة المئوية ضمن الترميز ASCII.

مصادر