2011-03-14 10 views
9

इस चर मान लें:कैसे स्ट्रिंग स्वरूपण मूल्य के रूप में सूची (या टपल) का उपयोग करने

s=['Python', 'rocks'] 
x = '%s %s' % (s[0], s[1]) 

अब मैं बहुत लंबे समय तक सूची स्थानापन्न करना चाहते हैं, और एस [0], एस की तरह अलग से सभी सूची मानों को जोड़ने, [1], ... रों [n], सही

उद्धरण दस्तावेज़ से नहीं लगता है:

को देखते हुए प्रारूप% मूल्यों ... एक प्रारूप एक भी तर्क की आवश्यकता है, मूल्यों हो सकता है एकल गैर-ट्यूपल ओबीजे ect। [4] अन्यथा, मान के साथ एक टुपल होना चाहिए, जिसमें प्रारूप स्ट्रिंग द्वारा निर्दिष्ट आइटमों की संख्या या एक मैपिंग ऑब्जेक्ट (उदाहरण के लिए, शब्दकोश) होना चाहिए।

मैं tuples और formatters रूप में, लेकिन सफलता नहीं मिली सूची के साथ कई संयोजनों की कोशिश की, इसलिए मैं यहाँ पूछने के लिए

मुझे आशा है कि यह स्पष्ट

[संपादित करें] ठीक है, शायद मैं नहीं था स्पष्ट है सोचा पर्याप्त

मैं बड़े पाठ चर है,

तरह
s = ['a', 'b', ..., 'z'] 

x = """some text block 
      %s 
      onother text block 
      %s 
      ... end so on... 
      """ % (s[0], s[1], ... , s[26]) 

मैं wo हाथ से हर मूल्य में प्रवेश के बिना दृढ़तापूर्वक अधिक % (s[0], s[1], ... , s[26]) बदलने की तरह uld

उत्तर

28

आप उल्लेख करने की जरूरत नहीं है सभी सूचकांकों:

s = ['language', 'Python', 'rocks'] 
some_text = "There is a %s called %s which %s." 
x = some_text % tuple(s) 

रों में आइटमों की संख्या है निश्चित रूप से प्रारूप स्ट्रिंग में डालने अंकों की संख्या के रूप में ही किया जाना है।

2 के बाद से।6 तुम भी उदाहरण के लिए, नई format विधि का उपयोग कर सकते हैं:

x = '{} {}'.format(*s) 
+0

आह, 'tuple (ओं)' धन्यवाद। इस मामले को हल किया गया – Ghostly

+1

पायथन 3 में '%' ऑपरेटर को बहिष्कृत करने के साथ, आपको इसके बजाय 'प्रारूप' विधि का उपयोग शुरू करना चाहिए: 'x = "{0} {1}"। प्रारूप (* s) '। निश्चित रूप से इस मामले में 'शामिल' बेहतर समाधान है .. –

0

वहाँ टपल सदस्यों में शामिल होने के लिए कैसे है:

x = " ".join(YourTuple) 

अंतरिक्ष अपने टपल सदस्यों विभाजक

1

आप मदों की एक सूची का उपयोग करना चाहते हैं, तो आप बस सीधे एक टपल पारित कर सकते हैं:

s = ['Python', 'rocks'] 
x = '%s %s' % tuple(s) 

या आप एक का उपयोग कर सकते शब्दकोश पहले अपनी सूची बनाने के लिए:

s = {'first':'python', 'second':'rocks'} 
x = '%(first)s %(second)s' % s 
-1

चेक निम्न उदाहरण

सूची उदाहरण

data = ["John", "Doe", 53.44] 
format_string = "Hello" 

print "Hello %s %s your current balance is %d$" % (data[0],data[1],data[2]) 

नमस्ते John Doe अपनी वर्तमान बकाया राशि 53 $

टपल उदाहरण

data = ("John", "Doe", 53.44) 
format_string = "Hello" 

print "Hello %s %s your current balance is %d$" % (data[0],data[1],data[2]) 

नमस्ते John Doe अपनी वर्तमान बकाया राशि 53 $ है

1

नए .format विधि के लिए @yan के उत्तर पर निर्माण, यदि किसी के पास कुंजी के लिए एक से अधिक मान वाले शब्दकोश हैं, तो अलग-अलग मानों तक पहुंचने के लिए कुंजी के साथ इंडेक्स का उपयोग करें।

>>> s = {'first':['python','really'], 'second':'rocks'} 
>>> x = '{first[0]} --{first[1]}-- {second}'.format(**s) 
>>> x 
'python --really-- rocks' 

सावधानी: यह थोड़ा अलग है जब आप .format() की एक प्रमुख स्वतंत्र है, जो इस प्रकार है के खिलाफ मानों में से एक का उपयोग करने के लिए है:

>>> value=s['first'][i] 
0

टॉक सस्ता है, तो आप को दिखाने कोड:

>>> tup = (10, 20, 30) 
>>> lis = [100, 200, 300] 
>>> num = 50 
>>> print '%d  %s'%(i,tup) 
50  (10, 20, 30) 
>>> print '%d  %s'%(i,lis) 
50  [100, 200, 300] 
>>> print '%s'%(tup,) 
(10, 20, 30) 
>>> print '%s'%(lis,) 
[100, 200, 300] 
>>> 
0

यदि आप अपने प्रारूप में 26 स्ट्रिंग्स इंजेक्शन करने के बारे में गंभीर हैं, तो आप प्लेसहोल्डर नामकरण पर विचार करना चाहेंगे। अन्यथा, आपके कोड को देखने वाले किसी को यह पता नहीं चल रहा है कि s[17] क्या है।

fields = { 
    'username': 'Ghostly', 
    'website': 'Stack Overflow', 
    'reputation': 6129, 
} 

fmt = ''' 
Welcome back to {website}, {username}! 
Your current reputation sits at {reputation}. 
''' 

output = fmt.format(**fields) 

यह सुनिश्चित हो, तुम एक सूची का उपयोग करें और Jochen Ritzel's answer, के अंत की तरह यह विस्तार करने के लिए जारी रख सकते हैं, लेकिन है कि बड़े संरचनाओं के लिए बनाए रखने के लिए कठिन है। मैं केवल कल्पना कर सकता हूं कि यह {} प्लेसहोल्डर के 26 के साथ कैसा दिखता है।

fields = [ 
    'Ghostly', 
    'Stack Overflow', 
    6129, 
] 

fmt = ''' 
Welcome back to {}, {}! 
Your current reputation sits at {}. 
''' 

output = fmt.format(*fields) 
संबंधित मुद्दे