2012-01-24 8 views
35

http://learnpythonthehardway.org/book/ex6.htmlअजगर हार्ड तरीका - व्यायाम 6 -% आर बनाम% s

जेड दूसरे के स्थान पर यहां %r और %s उपयोग करने के लिए लगता है, इन दोनों के बीच कोई अंतर है? क्यों न केवल %s का उपयोग क्यों करें?

इसके अलावा, मुझे यकीन नहीं था कि इस पर अधिक जानकारी प्राप्त करने के लिए प्रलेखन में क्या खोजना है। %r और %s क्या कहा जाता है? स्वरूपण तार?

+1

मिल http: // stackove rflow.com/a/6005180/1114171 और http://stackoverflow.com/a/997807/1114171, यह एक प्रारूपण/इंटरपोलेशन ऑपरेटर के रूप में जाना जाता है [docs] (http://docs.python.org/library/ stdtypes.html # स्ट्रिंग-स्वरूपण-संचालन) –

+0

संभव डुप्लिकेट [पायथन में% r का अर्थ क्या है] (http: // stackoverflow।कॉम/प्रश्न/2354329/व्हाट्स-द-अर्थ-ऑफ-आर-इन-पायथन) –

+2

संभव डुप्लिकेट [पाइथन में% s के बजाय% r का उपयोग कब करें?] (http://stackoverflow.com/questions/6005159/जब से उपयोग-R-बजाय के- रों-इन-अजगर) –

उत्तर

52

उन्हें string formatting operations कहा जाता है।

% s और% r के बीच का अंतर यह है कि% s str फ़ंक्शन का उपयोग करता है और% r repr फ़ंक्शन का उपयोग करता है। str और repr के बीच this answer में अंतर के बारे में आप पढ़ सकते हैं, लेकिन अंतर्निहित प्रकारों के लिए, अभ्यास में सबसे बड़ा अंतर यह है कि तारों के लिए repr उद्धरण शामिल हैं और सभी विशेष वर्ण बच गए हैं।

22

%rrepr पर कॉल करता है, जबकि %sstr पर कॉल करता है। ये कुछ प्रकार के लिए अलग-अलग व्यवहार कर सकते हैं, लेकिन दूसरों के लिए नहीं: repr "ऑब्जेक्ट का एक प्रिंट करने योग्य प्रतिनिधित्व" देता है, जबकि str "अच्छी तरह से ऑब्जेक्ट का प्रिंट करने योग्य प्रतिनिधित्व" देता है। उदाहरण के लिए, वे स्ट्रिंग्स के लिए अलग हैं:

>>> s = "spam" 
>>> print(repr(s)) 
'spam' 
>>> print(str(s)) 
spam 

इस मामले में, repr एक स्ट्रिंग (जो अजगर दुभाषिया एक str वस्तु में पार्स कर सकते हैं) का शाब्दिक प्रतिनिधित्व है, जबकि str बस की सामग्री है डोर।

-1

नीचे दिया गया कोड अंतर दर्शाता है। अलग ढंग से एक ही मूल्य प्रिंट:

x = "xxx" 
withR = "prints with quotes %r" 
withS = "prints without quotes %s" 
0
x = "example" 
print "My %s"%x 

     My example 

print "My %r"%x 

     My 'example' 

यह अच्छी तरह से ऊपर जवाब में समझाया गया है। मैंने इसे एक साधारण उदाहरण के साथ दिखाने की कोशिश की है।

2

निम्नलिखित तीन कोड उदाहरणों का सारांश है।

# First Example 
s = 'spam' 
# "repr" returns a printable representation of an object, 
# which means the quote marks will also be printed. 
print(repr(s)) 
# 'spam' 
# "str" returns a nicely printable representation of an 
# object, which means the quote marks are not included. 
print(str(s)) 
# spam 

# Second Example. 
x = "example" 
print ("My %r" %x) 
# My 'example' 
# Note that the original double quotes now appear as single quotes. 
print ("My %s" %x) 
# My example 

# Third Example. 
x = 'xxx' 
withR = ("Prints with quotes: %r" %x) 
withS = ("Prints without quotes: %s" %x) 
print(withR) 
# Prints with quotes: 'xxx' 
print(withS) 
# Prints without quotes: xxx 
0

%s => स्ट्रिंग

%r => वास्तव में किताब में कोड का उपयोग करना

है के रूप में:

my_name = 'Zed A. Shaw' 
print "Let's talk about %s." % my_name 
print "Let's talk about %r." % my_name 

हम

Let's talk about Zed A. Shaw. 
Let's talk about 'Zed A. Shaw'. 
संबंधित मुद्दे