"ValueError: स्वरूप में शून्य लंबाई फ़ील्ड नाम" पायथन 3.0,3.1,3.2 में त्रुटि


120

मैं पायथन सीखने की कोशिश कर रहा हूं (3 अधिक विशिष्ट होना) और मुझे यह त्रुटि मिल रही है:

ValueError: zero length field name in format

मैंने इसे देखा और मुझे पता चला कि आपको संख्याएँ निर्दिष्ट करने की आवश्यकता है:

a, b = 0, 1
if a < b:
     print('a ({0}) is less than b ({1})'.format(a, b))
else:
     print('a ({0}) is not less than b ({1})'.format(a, b))

और ट्यूटोरियल की तरह नहीं (lynda.com से) वास्तव में ऐसा करने के लिए कहता है:

a, b = 0, 1
if a < b:
     print('a ({}) is less than b ({})'.format(a, b))
else:
     print('a ({}) is not less than b ({})'.format(a, b))

निम्नलिखित ट्यूटोरियल im में पायथन 3.1 है, और 3.2 का उपयोग करके im है और मैंने इस त्रुटि के बारे में जो पढ़ा है वह यह है कि यह केवल <3.1 (3.0) में होता है। क्या उन्होंने 3.2 में इसे पूर्ववत किया, या मैं कुछ गलत कर रहा हूं?

इसके अलावा, धीरे-धीरे बोलें;) यह सचमुच मेरी पहली रात है, जब आप पायथन सीख रहे हैं और केवल दूसरा "स्क्रिप्ट" मैंने पायथन में लिखा है।


1
इसे जोड़ने का प्रयास करें: आयात sys; प्रिंट (sys.version), बस यह सुनिश्चित करने के लिए कि आप गलती से अजगर के किसी और संस्करण को नहीं बुला रहे हैं
विंस्टन एवर्ट

जवाबों:


131

मुझे लगता है कि आप किसी भी दुर्घटना से अजगर 2.6 चला रहे हैं अनुमान लगाने वाला हूँ।

यह सुविधा केवल कम से कम 3.1 के लिए उपलब्ध है यदि आप अजगर 3, या 2.7 का उपयोग कर रहे हैं यदि आप अजगर 2 का उपयोग कर रहे हैं।


3
धन्यवाद! वह यह था! मेरे शेबंग को बदलना था: #! /usr/local/bin/python3सभी को देखने के बाद। मैक -_- wtf पर अजगर के 3 अलग-अलग स्थान स्थापित हैं।
ऑस्कर गोडसन

4
यह आंशिक रूप से सही है: ओपी कोड काम करेगा यदि यह अजगर 2.7 था, लेकिन 2.6 नहीं। (देखें @ डेनिस विलियमसन का जवाब)।
मई

मैं विंडोज पर पायथन 3.0.1 के साथ यह समस्या ले रहा हूं। (यह निश्चित रूप से अजगर cmdline शुरू करने के बाद पहली पंक्ति में 3.0.1 कहते हैं)
Inger

@ लिंग, इसे इस्तेमाल करने के लिए आपको अजगर 3.1 की जरूरत है।
विंस्टन इवर्ट

हम्म, त्वरित उत्तर के लिए धन्यवाद..कभी भी, नीचे दिए गए उत्तर कहते हैं "2.7 और बाद में" - तो 3.0.1 पहले था? इसके अलावा, ओपी ने 3.0 (+ अन्य) में समस्या के बारे में पूछा - जिससे आपका जवाब "आप 2.6 चल रहे हैं", जो सुझाव देगा कि 3.0 ही ठीक है। यदि आप उत्तर को अपडेट कर सकते हैं तो अच्छा होगा। धन्यवाद
Inger

148

पायथन 2.6 और 3.0 को क्षेत्र संख्या की आवश्यकता होती है। पायथन में 2.7 और बाद में और 3.1 और बाद में, उन्हें छोड़ा जा सकता है।

संस्करण २. में बदला गया: स्थिति तर्क तर्क निर्दिष्ट किए जा सकते हैं, इसलिए '{} {}' '{0} {1}' के बराबर है।

python2.6.4>>> print '|{0:^12}|{1:^12}|'.format(3,4)
|     3      |     4     |

2
संस्करण अंतर मुझे आज jacked! सूचक के लिए धन्यवाद।
रिचर्ड क्लेटन

@ डेनिस: मैंने आपके उत्तर के लिए मतदान किया क्योंकि आपने दिखाया कि फील्ड नंबर को निर्दिष्ट करके अजगर के पुराने संस्करणों में समस्या का समाधान कैसे किया जाए। हालाँकि, "पायथन 2.7 और बाद में" कहना मेरे लिए भ्रामक लगता है क्योंकि यहाँ अन्य उत्तरों के अनुसार, पायथन 3.0 में फ़ील्ड संख्या आवश्यक है। विंस्टन अपने उत्तर पर अंतिम टिप्पणी में बताते हैं कि 3.0 के बाद 2.7 बाहर आया था, इसलिए आपका कथन कालानुक्रमिक रूप से सही हो सकता है, लेकिन हम में से अधिकांश इसे संकेत के रूप में पढ़ेंगे कि खाली ब्रेसिज़ 3.0 में काम करना चाहिए।
टॉम बैरोन

@TomBarron: खाली ब्रेसिज़ मेरे लिए काम करते हैं: python3.4 -c 'print("|{}|{}|".format(3,4))'लेकिन जाहिरा तौर पर 3.0 में यह नहीं है (3.1 और बाद में)। मैं अपना उत्तर स्पष्ट कर दूंगा।
अगली सूचना तक रोक दिया गया।

2

यदि आप ग्रहण का उपयोग कर रहे हैं तो आपको विंडो -> वरीयताएँ -> PyDev -> इंटरप्रेटर - पायथन में देखना चाहिए। वहां आपके पास दुभाषियों की एक सूची है (नाम और स्थान के साथ)। यदि आपकी वर्तमान परियोजना के लिए आप दुभाषिया का उपयोग कर रहे हैं, जो / usr / bin / python में उदाहरण के लिए स्थित है, तो संभवतः निष्पादित / usr / bin / python -V whill आपको "Python 2.6.6" जैसा कुछ देता है। और आपका जवाब है जैसे विंस्टन इवर्ट ने लिखा था।

(आप "न्यू ..." बटन पर क्लिक करके और "स्थान" के रूप में usr / bin / python3 देकर नया इंटरप्रेटर जोड़ सकते हैं। फिर आपको संभवतः अपनी प्रोजेक्ट सेटिंग्स (प्राथमिकताएँ -> प्यदेव - इंटरप्रेटर / व्याकरण) बदलनी होंगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.