python बैकस्लाश दो बार क्यों दिखाई देते हैं?



string escaping (1)

जो आप देख रहे हैं वह है __repr__() विधि द्वारा बनाई गई my_string का प्रतिनिधित्व । यदि आप इसे प्रिंट करते हैं, तो आप देख सकते हैं कि आपको वास्तव में एकल बैकस्लैश मिल गया है, जैसा आपने इरादा किया था:

>>> print(my_string)
why\does\it\happen?

नीचे दी गई स्ट्रिंग में तीन वर्ण हैं, चार नहीं:

>>> 'a\\b'
'a\\b'
>>> len('a\\b')
3

आप repr() अंतर्निहित फ़ंक्शन के साथ एक स्ट्रिंग (या किसी अन्य ऑब्जेक्ट) का मानक प्रतिनिधित्व प्राप्त कर सकते हैं:

>>> print(repr(my_string))
'why\\does\\it\\happen?'

पायथन स्ट्रिंग्स में बैकस्लाश का प्रतिनिधित्व करता है \\ क्योंकि बैकस्लैश एक बचने वाला चरित्र है - उदाहरण के लिए, \n एक नई लाइन का प्रतिनिधित्व करता है, और \t एक टैब का प्रतिनिधित्व करता है।

यह कभी-कभी आपको परेशानी में डाल सकता है:

>>> print("this\text\is\not\what\it\seems")
this    ext\is
ot\what\it\seems

इस वजह से, पाइथन को बताने का एक तरीका होना चाहिए, आप वास्तव में एक नई लाइन के बजाय दो अक्षर \n चाहते हैं, और आप बैकस्लैश से बचकर ऐसा करते हैं, एक और के साथ:

>>> print("this\\text\is\what\you\\need")
this\text\is\what\you\need

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

पायथन के स्ट्रिंग अक्षर के बारे में अधिक जानकारी पाइथन दस्तावेज में स्ट्रिंग और बाइट्स अक्षरों पर मिल सकती है।

जब मैं बैकस्लाश युक्त स्ट्रिंग बनाता हूं, तो उन्हें डुप्लिकेट मिलता है:

>>> my_string = "why\does\it\happen?"
>>> my_string
'why\\does\\it\\happen?'

क्यूं कर?





repr