2010-07-20 15 views
15

स्ट्रिंग में टुपल्स की सूची को परिवर्तित करने का सबसे आसान तरीका कौन सा है?पायथन - टुपल्स की स्ट्रिंग को स्ट्रिंग में

मेरे पास है:

[(1,2), (3,4)] 

और मैं चाहता हूँ:

"(1,2), (3,4)" 

इस मेरे समाधान कर दिया गया है:

l=[(1,2),(3,4)] 
s="" 
for t in l: 
    s += "(%s,%s)," % t 
s = s[:-1] 

वहाँ यह करने के लिए एक और अधिक pythonic तरीका है?

+2

इन tuples के लिए क्या हैं, उन्हें एक स्ट्रिंग में क्यों होना चाहिए, और वास्तव में उन्हें tuples होने की जरूरत है? –

+1

आप ऐसा क्यों करना चाहते हैं? आपकी असली समस्या क्या है? – SilentGhost

+1

@Ignacio, @SilentGost: मुझे आपकी टिप्पणियों पर लोगों को और अधिक विस्तृत करना अच्छा लगेगा (मैं अभी भी पाइथन सीख रहा हूं)। यह ओपी की स्ट्रिंग स्वरूपण समस्या का वास्तविक उत्तर नहीं हो सकता है, लेकिन मुझे यकीन है कि आपके पास लोगों के लिए बहुत महत्वपूर्ण मुद्दे हैं। – polygenelubricants

उत्तर

22

आप कुछ का उपयोग करना चाहें जैसे सरल रूप में:

>>> l = [(1,2), (3,4)] 
>>> str(l).strip('[]') 
'(1, 2), (3, 4)' 

.. जो काम है, लेकिन सही ढंग से काम करने की गारंटी नहीं

+2

क्या होगा यदि टुपल्स तारों के tuples हैं []? –

+5

@Rob: 'str.strip() 'केवल सिरों से हटा देता है। –

+4

यह सूची की आंतरिक स्ट्रिंग प्रस्तुति पर भरोसा करने के लिए खराब अभ्यास की तरह लगता है। –

30

आप कुछ इस तरह (see also on ideone.com) की कोशिश कर सकते हैं:

myList = [(1,2),(3,4)] 
print ",".join("(%s,%s)" % tup for tup in myList) 
# (1,2),(3,4) 
+0

जबकि @ mykhal का समाधान सरल है, मुझे लगता है कि यह सुंदर है :) –

+0

पायथनिक, मजबूत और छोटा। धन्यवाद। – Neowizard

1

कैसे

l = [(1, 2), (3, 4)] 
print repr(l)[1:-1] 
# (1, 2), (3, 4) 
के बारे में 10
+0

यहां अंतर वास्तव में आपके जैसा निर्धारित नहीं है; यदि यह महत्वपूर्ण है, तो यह दृष्टिकोण काम नहीं करेगा क्योंकि प्रत्येक आइटम सूची/टुपल में प्रत्येक स्थान के बाद पाइथन एक स्थान जोड़ता है। – Benj

13

कैसे के बारे में:

>>> tups = [(1, 2), (3, 4)] 
>>> ', '.join(map(str, tups)) 
'(1, 2), (3, 4)' 
+1

अब तक का सबसे साफ समाधान! –

+0

सबसे अधिक "पायथनिक" उत्तर। –

0

तीन और :)

l = [(1,2), (3,4)] 

unicode(l)[1:-1] 
# u'(1, 2), (3, 4)' 

("%s, "*len(l) % tuple(l))[:-2] 
# '(1, 2), (3, 4)' 

", ".join(["%s"]*len(l)) % tuple(l) 
# '(1, 2), (3, 4)' 
1

मुझे लगता है कि यह बहुत साफ है:

>>> l = [(1,2), (3,4)] 
>>> "".join(str(l)).strip('[]') 
'(1,2), (3,4)' 

कोशिश करो, यह मेरे लिए एक आकर्षण की तरह काम किया।

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