2010-10-06 12 views
34

यह शायद कुछ के लिए एक बहुत ही सरल सवाल है, लेकिन यह मुझे स्टंप कर दिया है। क्या आप पाइथन के ट्रिपल-कोट्स के भीतर चर का उपयोग कर सकते हैं?पायथन में, क्या आपके पास ट्रिपल कोट्स के भीतर चर हो सकते हैं? यदि हां, तो कैसे?

निम्न उदाहरण में, कैसे पाठ में चर का उपयोग करते हैं:

I like to wash clothes on tuesdays 
    I like to clean dishes never 

यदि नहीं सबसे अच्छा तरीका है बड़े हिस्से को संभालने के लिए क्या है:

wash_clothes = 'tuesdays' 
clean_dishes = 'never' 

mystring =""" I like to wash clothes on %wash_clothes 
I like to clean dishes %clean_dishes 
""" 

print(mystring) 

मैं इसे में परिणाम चाहते हैं टेक्स्ट की जहां आपको दो चर की आवश्यकता है, और टेक्स्ट और विशेष वर्णों का एक टन है?

उत्तर

31

तरीकों में से एक:

>>> mystring =""" I like to wash clothes on %s 
... I like to clean dishes %s 
... """ 
>>> wash_clothes = 'tuesdays' 
>>> clean_dishes = 'never' 
>>> 
>>> print mystring % (wash_clothes, clean_dishes) 
I like to wash clothes on tuesdays 
I like to clean dishes never 

इसके अलावा

+0

एकदम सही है कि। बहुत बहुत धन्यवाद! यह वहीं है जिसे मैं ढूंढ रहा था! मुझे बिल्कुल यह नहीं पता कि पाइथन जानता है कि कौन सा% s किस चर के साथ प्रतिस्थापित करने के लिए है। क्या यह निम्न में दिखाई देने वाले ऑर्डर को देखता है: प्रिंट mystring% (wash_clothes, clean_dishes) –

+0

@XL: आप अन्य स्वरूपण तकनीक पर एक नज़र डाल सकते हैं जिसके लिए मैंने लिंक प्रदान किया था लेकिन उदाहरण। उदाहरण NullUserException द्वारा प्रदान किया गया था।आप दोनों तकनीकों का उपयोग कर सकते हैं। – pyfunc

6

हाँ स्वरूपण स्ट्रिंग को देखो। मेरा मानना ​​है कि यह काम करेगा।

do_stuff = "Tuesday"

mystring = """I like to do stuff on %(tue)s""" % {'tue': do_stuff}

संपादित करें: फॉर्मेट स्पेसिफायर में एक 'एस' भूल गया।

+3

यदि आप कोई जवाब चिह्नित करने जा रहे हैं, तो कृपया कहें, ताकि हम सभी गलती से सीख सकें। – jonesy

+1

यह दोहराए गए चर के लिए बहुत अच्छा है – AliBZ

42

ऐसा करने का पसंदीदा तरीका % का इस्तेमाल करके उनकी विधि की तुलना में str.format() उपयोग कर रहा है:

स्ट्रिंग स्वरूपण का यह तरीका अजगर 3.0 में नया मानक है, और स्ट्रिंग में वर्णित स्वरूपण % को प्राथमिकता दी जानी चाहिए नए कोड में प्रारूपण प्रारूपण।

उदाहरण:

wash_clothes = 'tuesdays' 
clean_dishes = 'never' 

mystring =""" I like to wash clothes on {0} 
I like to clean dishes {1} 
""" 

print mystring.format(wash_clothes, clean_dishes) 
8

मुझे लगता है कि सबसे आसान तरीका str.format() के रूप में अन्य लोगों ने कहा।

हालांकि, मैंने सोचा कि मैं उल्लेख करता हूं कि पायथन के पास Python2.4 में string.Template कक्षा है।

यहां दस्तावेज़ों का एक उदाहरण दिया गया है।

>>> from string import Template 
>>> s = Template('$who likes $what') 
>>> s.substitute(who='tim', what='kung pao') 
'tim likes kung pao' 

मुझे पसंद है कारणों में से एक स्थितित्मक तर्कों के बजाय मैपिंग का उपयोग है।

+0

यह एक दिलचस्प दृष्टिकोण है। मुझे वास्तव में स्थितित्मक तर्क पसंद नहीं हैं क्योंकि यह वास्तव में बड़ी संख्या में चर के रूप में मुश्किल हो सकता है। मेरे पास एकमात्र सवाल यह है कि क्या यह विधि उपयुक्त है यदि आपके पास टेम्पलेट स्ट्रिंग में स्वरूपित टेक्स्ट और विशेष वर्णों की भारी मात्रा है? –

+2

आप 'प्रारूप' के साथ स्थितित्मक तर्क का उपयोग कर सकते हैं। 'डी = dict (foo = 1, बार = 2); "{foo} {bar}"। प्रारूप (** डी) ' – aaronasterling

+0

@ मार्टिनौ। हाँ। वह निश्चित रूप से एक टिपो था। – aaronasterling

1

भी ध्यान रखें कि आप मध्यवर्ती चर की जरूरत नहीं है:

name = "Alain" 
print """ 
Hello %s 
""" % (name) 
संबंधित मुद्दे

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