रॉ स्ट्रिंग्स के साथ पायथन में एस्केप सीक्वेंस को अनदेखा करना (अक्षम करना)

व्यापार

...',"..."पायथन में, यदि आप इन स्ट्रिंग अक्षर को निम्न वर्णों में से किसी एक के साथ उपसर्ग करते हैं, तो मान एस्केप अनुक्रम का विस्तार किए बिना एक स्ट्रिंग बन जाएगा।

  • r
  • R

विंडोज़ पथ और नियमित अभिव्यक्ति पैटर्न जैसे कई बैकस्लैश का उपयोग करने वाले तारों से निपटने में उपयोगी।
निम्नलिखित जानकारी यहाँ प्रदान की गई है।

  • निकास का क्रम
  • अनदेखा करें (अक्षम करें) कच्चे तार में भागने के क्रम
  • सामान्य स्ट्रिंग को कच्ची स्ट्रिंग में बदलें:repr()
  • अंत में बैकस्लैश नोट करें।

निकास का क्रम

पायथन में, ऐसे वर्ण जिन्हें सामान्य स्ट्रिंग (जैसे टैब और न्यूलाइन) में प्रदर्शित नहीं किया जा सकता है, को सी भाषा के समान बैकस्लैश के साथ एस्केप अनुक्रमों का उपयोग करके वर्णित किया गया है। एस्केप सीक्वेंस का एक उदाहरण नीचे दिखाया गया है।

  • \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']

विंडोज पथ

जब आप एक स्ट्रिंग के रूप में विंडोज पथ का प्रतिनिधित्व करना चाहते हैं तो कच्चे स्ट्रिंग का उपयोग करना उपयोगी होता है।

विंडोज़ पथ बैकस्लाश द्वारा अलग किए जाते हैं, इसलिए यदि आप सामान्य स्ट्रिंग का उपयोग करते हैं, तो आपको पथ से बचना होगा, लेकिन यदि आप कच्चे स्ट्रिंग का उपयोग करते हैं, तो आप इसे वैसे ही लिख सकते हैं। मान समतुल्य हैं।
\\

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() का उपयोग कर सकते हैं।

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