تجاهل (تعطيل) تسلسل الهروب في بايثون بسلاسل خام

اعمال

...'و"..."في Python ، إذا قمت ببدء بادئة هذه السلسلة الحرفية بأحد الأحرف التالية ، فستصبح القيمة سلسلة بدون توسيع تسلسل الهروب.

  • r
  • R

مفيد عند التعامل مع السلاسل التي تستخدم الكثير من الخطوط المائلة العكسية ، مثل مسارات Windows وأنماط التعبير العادي.
يتم توفير المعلومات التالية هنا.

  • تسلسل الهروب
  • تجاهل (تعطيل) تسلسل الهروب في السلاسل الأولية
  • تحويل السلسلة العادية إلى سلسلة خام:repr()
  • لاحظ الشرطة المائلة للخلف في النهاية.

تسلسل الهروب

في Python ، يتم وصف الأحرف التي لا يمكن تمثيلها في سلسلة عادية (مثل علامات الجدولة والأسطر الجديدة) باستخدام تسلسلات الهروب ذات الخطوط المائلة العكسية ، على غرار لغة C. يتم عرض مثال على تسلسل الهروب أدناه.

  • \t
  • \n
s = 'a\tb\nA\tB'
print(s)
# a b
# A B

تجاهل (تعطيل) تسلسل الهروب في السلاسل الأولية

...'و"..."إذا قمت ببدء مثل هذه السلسلة الحرفية بواحد مما يلي ، فستصبح القيمة سلسلة بدون توسيع تسلسل الهروب. يسمى هذا الخيط الخيط الخام.

  • r
  • R
rs = r'a\tb\nA\tB'
print(rs)
# a\tb\nA\tB

لا يوجد نوع خاص يسمى نوع السلسلة الخام ، فهو مجرد نوع سلسلة ويساوي سلسلة عادية مع شرطة مائلة للخلف ممثلة على النحو التالي
\\

print(type(rs))
# <class 'str'>

print(rs == 'a\\tb\\nA\\tB')
# True

في السلسلة العادية ، يعتبر تسلسل الهروب حرفًا واحدًا ، ولكن في السلسلة الأولية ، يتم أيضًا حساب الشرطات المائلة العكسية كأحرف. طول السلسلة وكل حرف على النحو التالي.

print(len(s))
# 7

print(list(s))
# ['a', '\t', 'b', '\n', 'A', '\t', 'B']

print(len(rs))
# 10

print(list(rs))
# ['a', '\\', 't', 'b', '\\', 'n', 'A', '\\', 't', 'B']

مسار Windows

يعد استخدام السلسلة الأولية مفيدًا عندما تريد تمثيل مسار Windows كسلسلة.

مسارات Windows مفصولة بشرطة مائلة عكسية ، لذلك إذا كنت تستخدم سلسلة عادية ، فيجب عليك الهروب من المسار كما يلي ، ولكن إذا كنت تستخدم سلسلة أولية ، فيمكنك كتابتها كما هي. القيم متكافئة.
\\

path = 'C:\\Windows\\system32\\cmd.exe'
rpath = r'C:\Windows\system32\cmd.exe'
print(path == rpath)
# True

لاحظ أن السلسلة التي تنتهي بعدد فردي من الشرطات المائلة للخلف ستؤدي إلى حدوث خطأ ، كما هو موضح أدناه. في هذه الحالة ، من الضروري كتابة السلسلة كسلسلة عادية ، أو ربطها بكتابة نهاية السلسلة فقط كسلسلة عادية.

path2 = 'C:\\Windows\\system32\\'
# rpath2 = r'C:\Windows\system32\'
# SyntaxError: EOL while scanning string literal
rpath2 = r'C:\Windows\system32' + '\\'
print(path2 == rpath2)
# True

تحويل السلاسل العادية إلى سلاسل أولية باستخدام repr ()

إذا كنت ترغب في تحويل سلسلة عادية إلى سلسلة خام تتجاهل (تعطيل) تسلسل الهروب ، يمكنك استخدام الوظيفة المدمجة repr ().

s_r = repr(s)
print(s_r)
# 'a\tb\nA\tB'

ما يعيده repr () هو سلسلة تمثل كائنًا بحيث يكون لها نفس القيمة كما كانت عندما تم تمريرها إلى EVAL () ، مع الأحرف البادئة والتالية.

print(list(s_r))
# ["'", 'a', '\\', 't', 'b', '\\', 'n', 'A', '\\', 't', 'B', "'"]

باستخدام الشرائح ، يمكننا الحصول على سلسلة مكافئة للخيط الخام مع ربط r.

s_r2 = repr(s)[1:-1]
print(s_r2)
# a\tb\nA\tB

print(s_r2 == rs)
# True

print(r'\t' == repr('\t')[1:-1])
# True

لاحظ الشرطة المائلة للخلف في النهاية.

نظرًا لأن الشرطة المائلة للخلف تتخطى حرف الاقتباس مباشرة بعده ، فسيحدث خطأ إذا كان هناك عدد فردي من الشرطات المائلة للخلف في نهاية السلسلة. عدد زوجي من الخطوط المائلة للخلف على ما يرام.

# print(r'\')
# SyntaxError: EOL while scanning string literal

print(r'\\')
# \\

# print(r'\\\')
# SyntaxError: EOL while scanning string literal
Copied title and URL