2009-04-27 18 views
30

जब मैं अजगर 2.5.2 में निम्न कोड चलाएँ:स्ट्रिंग अजगर संस्करण में स्वरूपण पहले की तुलना में 2.6

for x in range(1, 11): 
    print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x) 

मैं:

Traceback (most recent call last): 
    File "<pyshell#9>", line 2, in <module> 
    print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x) 
AttributeError: 'str' object has no attribute 'format' 

मैं समस्या समझ में नहीं आता।

dir('hello') से format विशेषता नहीं है।

मैं इसे कैसे हल कर सकता हूं?

उत्तर

7

आप किस पायथन संस्करण का उपयोग करते हैं?

संपादित अजगर 2.5 के लिए, का उपयोग "x = %s" % (x) (मुद्रण स्ट्रिंग्स के लिए)

आप, see here अन्य प्रकार के प्रिंट करना चाहते हैं।

+0

पायथन 2.5.2 ... – user46646

+5

str।प्रारूप() केवल 2.6+ और py3k –

8

मेरा मानना ​​है कि यह एक पायथन 3.0 सुविधा है, हालांकि यह संस्करण 2.6 में है। लेकिन अगर आपके पास उसके नीचे पायथन का संस्करण है, तो उस प्रकार का स्ट्रिंग स्वरूपण काम नहीं करेगा।

यदि आप सामान्य रूप से स्वरूपित स्ट्रिंग मुद्रित करने का प्रयास कर रहे हैं, तो % ऑपरेटर के माध्यम से पाइथन के प्रिंटफ-शैली सिंटैक्स का उपयोग करें। उदाहरण के लिए:

print '%.2f' % some_var 
32

2.6 नीचे अजगर संस्करणों के लिए, % operator का प्रयोग कर एक प्रारूप स्ट्रिंग में मूल्यों का एक अनुक्रम को जोड़ रहे हैं:

for x in range(1, 11): 
    print '%2d %3d %4d' % (x, x*x, x*x*x) 

तुम भी ध्यान रखें कि इस ऑपरेटर एक मानचित्रण से नाम द्वारा अंतर्वेशन सकते हैं होना चाहिए, बजाय का सिर्फ स्थितीय तर्क:

>>> "%(foo)s %(bar)d" % {'bar': 42, 'foo': "spam", 'baz': None} 
'spam 42' 

तथ्य यह है कि निर्मित वार्स() फ़ंक्शन एक मानचित्रण के रूप में एक नाम स्थान की विशेषताओं के साथ संयोजन में, यह बहुत आसान हो सकता है:

>>> bar = 42 
>>> foo = "spam" 
>>> baz = None 
>>> "%(foo)s %(bar)d" % vars() 
'spam 42' 
+5

में काम करता है यह एक अच्छा वर्णन है, लेकिन यह वर्णन नहीं करता है कि प्रस्तुत उदाहरण में स्वरूपण को कैसे कार्यान्वित किया जाए। –

7

हालांकि मौजूदा जवाब एक फिक्स की दिशा में कारणों और बिंदु का वर्णन है, उनमें से कोई भी वास्तव में एक समाधान है कि पूरा करता है क्या प्रश्न पूछता प्रदान करते हैं।

आपके पास समस्या का समाधान करने के लिए दो विकल्प हैं। पहला पायथन 2.6 या उससे अधिक तक अपग्रेड करना है, जो format string construct का समर्थन करता है।

दूसरा विकल्प older string formatting with the % operator का उपयोग करना है। आपके द्वारा प्रस्तुत किए गए समकक्ष कोड निम्नानुसार होंगे। के रूप में अपने उदाहरण कोड अजगर 2.6 और अधिक से अधिक में पैदा करता है

for x in range(1,11): 
    print '%2d %3d %4d' % (x, x*x, x*x*x) 

इस कोड को कतरना अजगर 2.5 में बिल्कुल वैसा ही उत्पादन पैदा करता है।

संबंधित मुद्दे