आप एक स्ट्रिंग को सूची में कैसे बदलेंगे?
कहते हैं तार जैसा है text = "a,b,c"। रूपांतरण के बाद, text == ['a', 'b', 'c']और उम्मीद है कि text[0] == 'a', text[1] == 'b'?
आप एक स्ट्रिंग को सूची में कैसे बदलेंगे?
कहते हैं तार जैसा है text = "a,b,c"। रूपांतरण के बाद, text == ['a', 'b', 'c']और उम्मीद है कि text[0] == 'a', text[1] == 'b'?
जवाबों:
ऐशे ही:
>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]
वैकल्पिक रूप से, eval()यदि आप स्ट्रिंग को सुरक्षित होने का भरोसा देते हैं, तो आप इसका उपयोग कर सकते हैं :
>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')
बस मौजूदा उत्तरों को जोड़ने के लिए: उम्मीद है, आप भविष्य में इस तरह से कुछ और सामना करेंगे:
>>> word = 'abc'
>>> L = list(word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'
लेकिन आप अभी क्या कर रहे हैं , @ कैमरन के जवाब के साथ जाएं।
>>> word = 'a,b,c'
>>> L = word.split(',')
>>> L
['a', 'b', 'c']
>>> ','.join(L)
'a,b,c'
निम्नलिखित पायथन कोड आपके स्ट्रिंग को स्ट्रिंग की सूची में बदल देगा:
import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)
jsonउदाहरण के लिए भी इस्तेमाल कर सकते हैं :json.loads(teststr)
अजगर में, शायद ही कभी आपको स्ट्रिंग को सूची में बदलने की आवश्यकता होती है, क्योंकि तार और सूचियां बहुत समान हैं
यदि आपके पास वास्तव में एक स्ट्रिंग है जो एक चरित्र सरणी होनी चाहिए, तो यह करें:
In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']
ध्यान दें कि स्ट्रिंग्स अजगर में सूचियों को बहुत पसंद करते हैं
In [3]: x[0]
Out[3]: 'f'
In [4]: for i in range(len(x)):
...: print x[i]
...:
f
o
o
b
a
r
तार सूची हैं। लगभग।
यदि आप रिक्त स्थान विभाजित करना चाहते हैं, तो आप इसका उपयोग कर सकते हैं .split():
a = 'mary had a little lamb'
z = a.split()
print z
आउटपुट:
['mary', 'had', 'a', 'little', 'lamb']
(), यानी कुछ भी नहीं है।
यदि आप वास्तव में सरणियाँ चाहते हैं:
>>> from array import array
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> myarray = array('c', text)
>>> myarray
array('c', 'abc')
>>> myarray[0]
'a'
>>> myarray[1]
'b'
यदि आपको सरणियों की आवश्यकता नहीं है, और केवल अपने वर्णों में अनुक्रमणिका द्वारा देखना चाहते हैं, तो याद रखें कि एक स्ट्रिंग एक पुनरावृत्त है, बस एक सूची की तरह इस तथ्य को छोड़कर कि यह अपरिवर्तनीय है:
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'
सभी उत्तर अच्छे हैं, करने का एक और तरीका है, जो सूची की समझ है, नीचे दिए गए समाधान देखें।
u = "UUUDDD"
lst = [x for x in u]
अल्पविराम से अलग सूची के लिए निम्नलिखित कार्य करें
u = "U,U,U,D,D,D"
lst = [x for x in u.split(',')]
मैं आमतौर पर उपयोग करता हूं:
l = [ word.strip() for word in text.split(',') ]
stripशब्दों के आसपास निकालें रिक्त स्थान।
मेरे द्वारा लिखे stringगए फॉर्म को a="[[1, 3], [2, -6]]"अभी तक अनुकूलित कोड में परिवर्तित नहीं करने के लिए:
matrixAr = []
mystring = "[[1, 3], [2, -4], [19, -15]]"
b=mystring.replace("[[","").replace("]]","") # to remove head [[ and tail ]]
for line in b.split('], ['):
row =list(map(int,line.split(','))) #map = to convert the number from string (some has also space ) to integer
matrixAr.append(row)
print matrixAr
कार्यात्मक अजगर का उपयोग करना:
text=filter(lambda x:x!=',',map(str,text))
उदाहरण 1
>>> email= "myemailid@gmail.com"
>>> email.split()
#OUTPUT
["myemailid@gmail.com"]
उदाहरण 2
>>> email= "myemailid@gmail.com, someonsemailid@gmail.com"
>>> email.split(',')
#OUTPUT
["myemailid@gmail.com", "someonsemailid@gmail.com"]