पायथन स्ट्रिंग प्रारूपण में% s और% d के बीच क्या अंतर है?


138

मैं क्या समझ नहीं %sऔर %dक्या करना है और कैसे वे काम करते हैं।

जवाबों:


185

उनका उपयोग स्ट्रिंग्स को स्वरूपित करने के लिए किया जाता है। %sएक स्ट्रिंग के लिए एक प्लेसहोल्डर काम करता है जबकि %dएक नंबर के लिए प्लेसहोल्डर के रूप में कार्य करता है। उनके संबंधित मूल्यों को %ऑपरेटर का उपयोग करके एक टपल के माध्यम से पारित किया जाता है ।

name = 'marcog'
number = 42
print '%s %d' % (name, number)

छप जाएगा marcog 42। ध्यान दें कि नाम एक स्ट्रिंग (% s) है और संख्या एक पूर्णांक (दशमलव के लिए% d) है।

देखें https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting जानकारी के लिए।

पायथन 3 में उदाहरण होगा:

print('%s %d' % (name, number))

2
Google Chrome में: सेटिंग्स >> खोज >> खोज इंजन प्रबंधित करें ... ध्यान दें कि %sखोज इंजन कॉन्फ़िगरेशन के साथ कैसे उपयोग किया जाता है। %sएड्रेस बार में दर्ज किए गए कीवर्ड को बदलने के लिए क्रोम का उपयोग करता है। अजगर %sइसी तरह से उपयोग करता है। में ऑपरेटर में संग्रहीत पाठ स्ट्रिंग से बदल दिया जाएगा चर। राउंड ब्रेसेस पाइथन 3 में एक एरर मैसेज को print('description: %s' % descrip)%sdescrip
रोकते हैं

आप इन% s,% d, आदि को क्या कहते हैं?
चाइन

1
@ उन्हें प्लेसहोल्डर्स कहा जाता है, वे बदले जाने योग्य चर हैं
लियो

@Leo धन्यवाद!
चाइन

37

से अजगर 3 डॉक

%d दशमलव पूर्णांक के लिए है

%s सामान्य स्ट्रिंग या ऑब्जेक्ट के लिए है और ऑब्जेक्ट के मामले में, इसे स्ट्रिंग में बदल दिया जाएगा

निम्नलिखित कोड पर विचार करें

name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))

आउट पुट होगा

जियाकोमो 4.3 4 4.300000 4.3

जैसा कि आप देख सकते हैं %dकि पूर्णांक में छोटा हो %sजाएगा, स्वरूपण बनाए रखेगा, %fफ़्लोट के रूप में प्रिंट करेगा और %gसामान्य संख्या के लिए उपयोग किया जाता है

जाहिर है

print('%d' % (name))

एक अपवाद उत्पन्न करेगा; आप स्ट्रिंग को संख्या में नहीं बदल सकते


यह अधिक उपजाऊ बनाता है। यह बताता है कि अगर %sएक नंबर के बदले इसका इस्तेमाल किया जाए तो क्या होगा ।
विकास प्रसाद

1
% D और% i के बीच क्या अंतर है, अगर दोनों पूर्णांक में परिवर्तित हो जाएंगे? % D की तुलना% i और% f से कैसे होती है?
श्रीनि

34

%s स्ट्रिंग मानों के लिए एक प्लेसहोल्डर के रूप में उपयोग किया जाता है जिसे आप एक स्वरूपित स्ट्रिंग में इंजेक्ट करना चाहते हैं।

%d संख्यात्मक या दशमलव मानों के लिए एक प्लेसहोल्डर के रूप में उपयोग किया जाता है।

उदाहरण के लिए (अजगर 3 के लिए)

print ('%s is %d years old' % ('Joe', 42))

उत्पादन होगा

Joe is 42 years old

6
वास्तव में समस्या की व्याख्या नहीं करता है? मैं समस्या को समझाने नहीं कर रहा हूँ, मैं एक संक्षिप्त जवाब प्रदान कर रहा हूँ करने के लिए सवाल। यह प्रश्न विशेष रूप से पूछा गया कि% s और% d किसके लिए थे।
सोवियुत

2
क्या आप% i और% d के बीच अंतर जानते हैं? क्या अजगर% i का समर्थन करता है?
cryanbhu

11

ये प्लेसहोल्डर हैं:

उदाहरण के लिए: 'Hi %s I have %d donuts' %('Alice', 42)

कोड की यह रेखा ऐलिस (str) के साथ% s और 42 के साथ% d को प्रतिस्थापित करेगी।

आउटपुट: 'Hi Alice I have 42 donuts'

यह अधिकतर समय "+" के साथ प्राप्त किया जा सकता है। अपने प्रश्न के बारे में गहरी समझ हासिल करने के लिए, आप {} / .format () भी जांचना चाह सकते हैं। यहाँ एक उदाहरण है: पायथन स्ट्रिंग प्रारूपण:% बनाम .फॉर्मट

यहाँ भी देखें एक google python ट्यूटोरियल वीडियो @ 40 ', इसमें कुछ स्पष्टीकरण दिए गए हैं https://www.youtube.com/watch?v=tKTZoB2Vjuk


10

%dऔर %sस्ट्रिंग "कमांड" स्वरूपण प्रारूप तार किया जाता है। %dसंख्या के लिए है, और %sतार के लिए है।

एक उदाहरण के लिए:

print("%s" % "hi")

तथा

print("%d" % 34.6)

कई तर्क पारित करने के लिए:

print("%s %s %s%d" % ("hi", "there", "user", 123456)) वापस होगा hi there user123456


9

ये सभी जानकारीपूर्ण उत्तर दिए गए हैं, लेकिन कोई भी काफी क्या अंतर के बीच है के मूल में हो रही है %sऔर %d

%sसूत्रधार को str()फ़ंक्शन को तर्क पर कॉल करने के लिए कहता है और चूंकि हम परिभाषा द्वारा एक स्ट्रिंग के लिए मजबूर कर रहे हैं, %sअनिवार्य रूप से सिर्फ प्रदर्शन कर रहा है str(arg)

%dदूसरी ओर, कॉल int()करने से पहले तर्क पर कॉल कर रहा है str(), जैसे str(int(arg)), यह intजबरदस्ती के साथ-साथ strजबरदस्ती का कारण बनेगा ।

उदाहरण के लिए, मैं एक हेक्स मान को दशमलव में बदल सकता हूं,

>>> '%d' % 0x15
'21'

या एक फ्लोट को काटें।

>>> '%d' % 34.5
'34'

यदि तर्क एक संख्या नहीं है, तो ऑपरेशन एक अपवाद बढ़ाएगा।

>>> '%d' % 'thirteen'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str

तो अगर इरादा सिर्फ बुलाना है str(arg), तो %sपर्याप्त है, लेकिन अगर आपको अतिरिक्त स्वरूपण की आवश्यकता है (जैसे फ़्लोटिंग दशमलव स्थानों को प्रारूपित करना) या अन्य ज़बरदस्ती, तो अन्य प्रारूप प्रतीकों की आवश्यकता है।

f-stringसंकेतन के साथ , जब आप फ़ॉर्मेटर को छोड़ते हैं, तो डिफ़ॉल्ट होता है str

>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'd' for object of type 'str'

यही सच है string.format; डिफ़ॉल्ट है str

>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'

8

%dऔर %sप्लेसहोल्डर हैं, वे एक परिवर्तनीय चर के रूप में काम करते हैं। उदाहरण के लिए, यदि आप 2 चर बनाते हैं

variable_one = "Stackoverflow"
variable_two = 45

आप चर के एक समूह का उपयोग करके उन चर को एक वाक्य में निर्दिष्ट कर सकते हैं।

variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"

ध्यान दें कि %sस्ट्रिंग के लिए और %dसंख्यात्मक या दशमलव चर के लिए काम करता है ।

यदि आप प्रिंट variable_3करते हैं तो यह इस तरह दिखेगा

print(variable_3 % (variable_one, variable_two))

मैं StackOverflow में एक उत्तर की खोज कर रहा था और अपने प्रश्न के 45 से अधिक उत्तर पाया।


5

वे प्रारूप विनिर्देशक हैं। उनका उपयोग तब किया जाता है जब आप अपने पायथन एक्सप्रेशंस के मूल्य को स्ट्रिंग्स में शामिल करना चाहते हैं, एक विशिष्ट प्रारूप के साथ।

देखें अजगर में डुबकी एक अपेक्षाकृत विस्तृत परिचय के लिए।



2

अगर आप% s या% d से बचना चाहते हैं तो ..

name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)

आउटपुट:

my name is marcog and my name is 42

2
इस सवाल का जवाब क्या है? प्रश्नकर्ता %sऔर के उपयोग के बारे में पूछ रहा था %d
मार्क डिकिन्सन

BTW, आपके द्वारा दिखाया गया कोड Python 3.5.1 में अमान्य है: printPython 3 में एक फंक्शन है, न कि स्टेटमेंट।
मार्क डिकिंसन

मैंने पोस्ट को संपादित किया है ... कृपया इसे देखें। वास्तव में, मैंने इसे एक विकल्प के रूप में पोस्ट किया है। कुछ लोग% d या% s का उपयोग करने से बच सकते हैं। और त्रुटि का पता लगाने के लिए धन्यवाद, .. मैंने कोड संपादित किया है।
सुजाता

3
संपादन के लिए धन्यवाद। दुर्भाग्य से, यह अभी भी सवाल का जवाब नहीं है।
मार्क डिकिन्सन

2

% s का उपयोग स्ट्रिंग के लिए स्थान रखने के लिए किया जाता है% d का उपयोग संख्या के लिए स्थान रखने के लिए किया जाता है

name = "Moses";
age = 23
print("My name is %s am CEO at MoTech Computers " %name)
print("Current am %d years old" %age)
print("So Am %s and am %d years old" %(name,age))

कार्यक्रम का उत्पादन

यह वीडियो उस टिप https://www.youtube.com/watch?v=4zN5YsuiqMA के बारे में गहराई से बताता है


ढेर अतिप्रवाह में आपका स्वागत है! आपका उत्तर अन्य 12 से कैसे भिन्न है?
वासिल वेइलकोव

लगभग वे प्रारूप समान काम करते हैं, लेकिन मैं चाहता था कि एक समझ बढ़ाने के लिए और अधिक उदाहरण दिए जाएं
नोएल मूसा मोवांडेए

एक दम बढ़िया! आप प्रोग्राम आउटपुट को टेक्स्ट के रूप में जोड़कर अपने उत्तर को बेहतर बना सकते हैं, न कि इमेज के रूप में।
Vasil Velichkov

आपकी चिंता के लिए धन्यवाद, मैं कुछ बदलाव करूंगा, आपका स्वागत है
नोएल मूसा मावेंडे

1

जिसके बोल ...
python3.6 के साथ आता है f-stringsजो स्वरूपण में चीजों को बहुत आसान बनाता है!
अब यदि आपका अजगर संस्करण 3.6 से अधिक है, तो आप इन उपलब्ध तरीकों से अपने तारों को प्रारूपित कर सकते हैं:

name = "python"

print ("i code with %s" %name)          # with help of older method
print ("i code with {0}".format(name))  # with help of format
print (f"i code with {name}")           # with help of f-strings
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.