...',"..."पाइथनमा, यदि तपाईंले यी स्ट्रिङ लिटरलहरूलाई निम्न वर्णहरू मध्ये एउटासँग उपसर्ग लगाउनुभयो भने, मान एस्केप अनुक्रम विस्तार नगरी स्ट्रिङ हुनेछ।
rR
धेरै ब्याकस्ल्याशहरू प्रयोग गर्ने स्ट्रिङहरूसँग व्यवहार गर्दा उपयोगी, जस्तै Windows पथहरू र नियमित अभिव्यक्ति ढाँचाहरू।
निम्न जानकारी यहाँ प्रदान गरिएको छ।
- भाग्ने क्रम
- कच्चा स्ट्रिङहरूमा एस्केप अनुक्रमहरू उपेक्षा (असक्षम) गर्नुहोस्
- सामान्य स्ट्रिङलाई कच्चा स्ट्रिङमा रूपान्तरण गर्नुहोस्:
repr() - अन्तमा ब्याकस्ल्याश नोट गर्नुहोस्।
भाग्ने क्रम
पाइथनमा, सामान्य स्ट्रिङमा प्रतिनिधित्व गर्न नसकिने क्यारेक्टरहरू (जस्तै ट्याबहरू र नयाँलाइनहरू) सी भाषा जस्तै ब्याकस्ल्याशहरूसहित एस्केप अनुक्रमहरू प्रयोग गरेर वर्णन गरिन्छ। एस्केप अनुक्रमको उदाहरण तल देखाइएको छ।
\t\n
s = 'a\tb\nA\tB'
print(s)
# a b
# A B
कच्चा स्ट्रिङहरूमा एस्केप अनुक्रमहरू उपेक्षा (असक्षम) गर्नुहोस्
...',"..."यदि तपाईंले निम्न मध्ये एउटासँग यस्तो स्ट्रिङ शाब्दिक उपसर्ग लगाउनुभयो भने, मान एस्केप अनुक्रम विस्तार नगरी स्ट्रिङ हुनेछ। यस्तो स्ट्रिङलाई कच्चा तार भनिन्छ।
rR
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() को साथ सामान्य स्ट्रिङलाई कच्चा स्ट्रिङमा रूपान्तरण गर्नुहोस्
यदि तपाइँ एक सामान्य स्ट्रिङलाई कच्चा स्ट्रिङमा रूपान्तरण गर्न चाहनुहुन्छ भने (असक्षम) एस्केप अनुक्रमहरू, तपाइँ निर्मित प्रकार्य 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


