2010-07-08 9 views
75

में किसी भी डेटा प्रकार को किसी स्ट्रिंग में बदलने के लिए कैसे करें Python में किसी भी डेटा प्रकार को स्ट्रिंग में कैसे बदल सकता हूं?पाइथन

mystring = repr(myvariable) # '4' 

यह "रूपांतरण" अजगर में कहा जाता है, और बहुत आम है:

+7

'str (वर)'? क्या आप यही खोज रहे हैं? – SilentGhost

+1

क्या आप डेटा के मानव-पठनीय स्ट्रिंग का प्रतिनिधित्व करना चाहते हैं? या आप डेटा युक्त स्मृति के बाइट उन्मुख दृश्य चाहते हैं? –

उत्तर

71
myvariable = 4 
mystring = str(myvariable) # '4' 

भी, वैकल्पिक रूप से रेपर प्रयास करें।

+5

मैं repr (myvariable) का उपयोग नहीं करता - यह अक्सर कक्षा प्रकार, स्मृति पता आदि के बारे में जानकारी देता है। यह डिबगिंग के लिए अधिक उपयोगी है। यूनिकोड में रूपांतरण के लिए स्ट्रिंग और यूनिकोड (चर) में रूपांतरण के लिए str (myvariable) का उपयोग करें। – Abgan

+0

विस्तार के लिए धन्यवाद, एबगन से पूरी तरह से सहमत हैं। –

+1

यूनिकोड के बारे में क्या? कुछ 'str (u'ä') 'काम नहीं करेगा। हालांकि 'repr (u'ä') काम करेगा। –

4

str(x) के साथ। हालांकि, प्रत्येक डेटा प्रकार अपने स्वयं के स्ट्रिंग रूपांतरण को परिभाषित कर सकता है, इसलिए यह वही नहीं हो सकता है जो आप चाहते हैं।

+1

यह एक महत्वपूर्ण लेकिन दुर्लभ विचार है। अच्छा है कि आपने इसका उल्लेख किया है। – jathanism

8

str(object) चाल करेगा।

यदि आप ऑब्जेक्ट की स्ट्रिंग के तरीके को बदलना चाहते हैं, तो ऑब्जेक्ट क्लास के लिए __str__(self) विधि को परिभाषित करें। इस तरह की विधि को स्ट्र या यूनिकोड ऑब्जेक्ट लौटना पड़ता है।

+0

कौन सी विधि कुशल है? 'str (any_var)' या 'any_var .__ str __()' –

+0

@ केदार। एटवाडेकर: यहां तक ​​कि यदि निष्पादन समय में उल्लेखनीय अंतर है (जो मुझे संदेह है, लेकिन मैं आपको 'टाइमिट' मॉड्यूल का उपयोग करके इसे छेड़छाड़ करने के लिए प्रोत्साहित करता हूं), आपको चाहिए 'str (any_var)' का उपयोग करें क्योंकि यह मानव के लिए अधिक पठनीय है और 'any_var'' __repr __() 'को परिभाषित करता है, लेकिन मामलों को लाभ देता है लेकिन '__str __()' को परिभाषित नहीं करता है। – Abgan

+0

आपके उत्तर के लिए धन्यवाद। पाइथन 3.0 पर –

1

बस str का उपयोग करें - उदाहरण के लिए:

>>> str([]) 
'[]' 
10

उपयोग str निर्मित:

x = str(something) 

उदाहरण:

>>> str(1) 
'1' 
>>> str(1.0) 
'1.0' 
>>> str([]) 
'[]' 
>>> str({}) 
'{}' 

... 

प्रलेखन से:

एक ऑब्जेक्ट का एक अच्छी तरह से प्रिंट करने योग्य प्रतिनिधित्व युक्त एक स्ट्रिंग लौटें। तारों के लिए, यह स्ट्रिंग स्वयं ही देता है। Repr (ऑब्जेक्ट) के साथ अंतर यह है कि str (ऑब्जेक्ट) हमेशा एक स्ट्रिंग को वापस करने का प्रयास नहीं करता है जो eval() को स्वीकार्य है; इसका लक्ष्य एक प्रिंट करने योग्य स्ट्रिंग को वापस करना है। यदि कोई तर्क नहीं दिया जाता है, तो खाली स्ट्रिंग देता है, ''।

31

str ऑब्जेक्ट के डेटा के स्ट्रिंग प्रस्तुति का उत्पादन करने के लिए है। आप अपने खुद के वर्ग लिख रहे हैं और आप str आपके लिए काम करना चाहते हैं, जोड़ें:

def __str__(self): 
    return ... 

print str(myObj)myObj.__str__() कॉल करेंगे।

repr एक समान विधि है, जो आम तौर पर कक्षा की जानकारी पर जानकारी उत्पन्न करती है। अधिकांश कोर लाइब्रेरी ऑब्जेक्ट के लिए, repr कोण ब्रैकेट के बीच कक्षा का नाम (और कभी-कभी कुछ कक्षा जानकारी) उत्पन्न करता है। repr का उपयोग किया जाएगा, उदाहरण के लिए, print या किसी और चीज का उपयोग किए बिना, अपनी ऑब्जेक्ट फलक में अपनी ऑब्जेक्ट टाइप करके।

तुम बस की तरह आप str के व्यवहार को परिभाषित कर सकते अपनी खुद की वस्तुओं के लिए repr के व्यवहार को परिभाषित कर सकते हैं:

def __repr__(self): 
    return ... 

अपनी बातचीत फलक में >>> myObj, या repr(myObj), में myObj.__repr__()

11

मैं परिणाम होगा सभी उत्तरों को str(object) का उपयोग करने की सलाह दें। यदि आपकी ऑब्जेक्ट में एसीआईआई अक्षरों से अधिक है तो यह असफल हो सकता है और आपको ordinal not in range(128) जैसी त्रुटि दिखाई देगी।यह मेरे लिए मामला था, जबकि मैं अंग्रेजी

से भाषा में स्ट्रिंग की सूची परिवर्तित किया गया था अन्य मैं unicode(object)

HTH का उपयोग करके इसका समाधान नहीं होता

+1

, स्ट्र (ऑब्जेक्ट) डिफ़ॉल्ट रूप से यूनिकोड करता है – dmjalund

0

आप की तरह एक तरह से उपयोग कर सकते हैं% s

नीचे
>>> "%s" %([]) 
'[]' 
0

उपयोग स्वरूपण:

"%s" % (x) 

पूर्व पर्याप्त:

x = time.ctime(); str = "%s" % (x); print str 

आउटपुट: गुरु जनवरी 11 20:40:05 2018