मैं इसे पायथन 2 में करता हूं:
"(%d goals, $%d)" % (self.goals, self.penalties)
इसका 3 संस्करण पायथन क्या है?
मैंने ऑनलाइन उदाहरणों की खोज करने की कोशिश की लेकिन मुझे पायथन 2 संस्करण मिलते रहे।
मैं इसे पायथन 2 में करता हूं:
"(%d goals, $%d)" % (self.goals, self.penalties)
इसका 3 संस्करण पायथन क्या है?
मैंने ऑनलाइन उदाहरणों की खोज करने की कोशिश की लेकिन मुझे पायथन 2 संस्करण मिलते रहे।
जवाबों:
यहां "नए" प्रारूप सिंटैक्स के बारे में डॉक्स दिए गए हैं । एक उदाहरण होगा:
"({:d} goals, ${:d})".format(self.goals, self.penalties)
यदि दोनों goalsऔर penaltiesपूर्णांकों (यानी उनके डिफ़ॉल्ट प्रारूप ठीक है), यह करने के लिए छोटा किया जा सकता है कर रहे हैं:
"({} goals, ${})".format(self.goals, self.penalties)
और चूंकि पैरामीटर क्षेत्र के होते हैं self, इसलिए दो बार एकल तर्क का उपयोग करके इसे करने का एक तरीका भी है (जैसा कि @Burhan खालिद ने टिप्पणियों में उल्लेख किया है):
"({0.goals} goals, ${0.penalties})".format(self)
व्याख्या:
{} डिफ़ॉल्ट प्रारूप के साथ बस अगले स्थितीय तर्क का मतलब है;{0}सूचकांक के साथ तर्क का मतलब है 0, डिफ़ॉल्ट प्रारूप के साथ;{:d} दशमलव पूर्णांक प्रारूप के साथ अगला स्थिति तर्क है;{0:d}सूचकांक के साथ तर्क है 0, दशमलव पूर्णांक प्रारूप के साथ।कई अन्य चीजें हैं जो आप एक तर्क का चयन करते समय कर सकते हैं (स्थितिगत लोगों के बजाय नामित तर्कों का उपयोग करके, खेतों तक पहुंच, आदि) और कई प्रारूप विकल्प (साथ ही संख्या को जमा करना, हजारों विभाजकों का उपयोग करना, संकेत दिखाना या नहीं, आदि)। कुछ अन्य उदाहरण:
"({goals} goals, ${penalties})".format(goals=2, penalties=4)
"({goals} goals, ${penalties})".format(**self.__dict__)
"first goal: {0.goal_list[0]}".format(self)
"second goal: {.goal_list[1]}".format(self)
"conversion rate: {:.2f}".format(self.goals / self.shots) # '0.20'
"conversion rate: {:.2%}".format(self.goals / self.shots) # '20.45%'
"conversion rate: {:.0%}".format(self.goals / self.shots) # '20%'
"self: {!s}".format(self) # 'Player: Bob'
"self: {!r}".format(self) # '<__main__.Player instance at 0x00BF7260>'
"games: {:>3}".format(player1.games) # 'games: 123'
"games: {:>3}".format(player2.games) # 'games: 4'
"games: {:0>3}".format(player2.games) # 'games: 004'
नोट: जैसा कि अन्य ने बताया, नया प्रारूप पूर्व को सुपरसेड नहीं करता है, दोनों पायथन 3 और पायथन 2 के नए संस्करणों के साथ-साथ दोनों में उपलब्ध हैं। कुछ लोग इसे वरीयता का विषय कह सकते हैं, लेकिन IMHO नए पुराने की तुलना में बहुत अधिक अभिव्यंजक है, और इसका उपयोग जब भी नया कोड लिखना होता है (जब तक कि यह पुराने वातावरण को लक्षित नहीं करता है, तो निश्चित रूप से)।
"({0.goals} goals, ${0.penalties})".format(self)
"conversion rate: {:.2%}".format(self.goals / self.shots):? मेरे लिए ठीक काम करता है क्योंकि यह है ... (पायथन 3.4) ध्यान दें कि इसमें कोई भी नहीं fहै, मैं एक प्रतिशत के रूप में प्रारूप करने के लिए कह रहा हूं, एक अस्थायी बिंदु संख्या के रूप में नहीं।
"{:.2f}%".format(float_num)दोनों के लिए ठीक काम करता है।
$इसका कोई विशेष अर्थ नहीं है, न तो पुराने प्रारूप के सिंटैक्स में और न ही नए में, इस प्रकार उत्पन्न स्ट्रिंग में मौजूद होना चाहिए, अपरिवर्तित।
अजगर 3.6 अब PEP 498 के साथ शॉर्टहैंड शाब्दिक स्ट्रिंग प्रक्षेप का समर्थन करता है । आपके उपयोग के मामले में, नया सिंटैक्स बस है:
f"({self.goals} goals, ${self.penalties})"
यह पिछले .formatमानक के समान है , लेकिन किसी को आसानी से ऐसा करने देता है जैसे :
>>> width = 10
>>> precision = 4
>>> value = decimal.Decimal('12.34567')
>>> f'result: {value:{width}.{precision}}'
'result: 12.35'
यह पंक्ति पाइथन 3 में काम करती है।
>>> sys.version
'3.2 (r32:88445, Oct 20 2012, 14:09:29) \n[GCC 4.5.2]'
>>> "(%d goals, $%d)" % (self.goals, self.penalties)
'(1 goals, $2)'
मुझे यह तरीका पसंद है
my_hash = {}
my_hash["goals"] = 3 #to show number
my_hash["penalties"] = "5" #to show string
print("I scored %(goals)d goals and took %(penalties)s penalties" % my_hash)
क्रमशः कोष्ठक में संलग्न d और s पर ध्यान दें।
आउटपुट होगा:
I scored 3 goals and took 5 penalties