पायथन में कॉमा-सीमांकित वस्तुओं के साथ एक स्ट्रिंग को कैसे परिवर्तित करें?


140

आप एक स्ट्रिंग को सूची में कैसे बदलेंगे?

कहते हैं तार जैसा है text = "a,b,c"। रूपांतरण के बाद, text == ['a', 'b', 'c']और उम्मीद है कि text[0] == 'a', text[1] == 'b'?


2
नमस्ते, मैंने ऐसा किया था, सूची (stringObject.split (','))
Günay Gültekin

जवाबों:


205

ऐशे ही:

>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]

वैकल्पिक रूप से, eval()यदि आप स्ट्रिंग को सुरक्षित होने का भरोसा देते हैं, तो आप इसका उपयोग कर सकते हैं :

>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')

@ क्लिंटनै: कोई बात नहीं;; आप यह भी देखना चाह सकते हैं कि pickleक्या आप वस्तुओं को तार से जोड़ रहे हैं।
कैमरन

2
यह एक सरणी नहीं है, यह एक सूची है, अर्र्स बुनियादी मूल्यों का प्रतिनिधित्व करता है और सूचियों की तरह बहुत व्यवहार करता है, सिवाय इसके कि उनमें संग्रहीत वस्तुओं का प्रकार विवश है।
जोकिन

8
फ्रेंडली रिमाइंडर: यदि आप स्ट्रिंग को सुरक्षित होने का भरोसा देते हैं, तो भी इस् तेमाल का उपयोग न करें। यह व्यक्तिगत स्क्रिप्ट और एक इंटरैक्टिव शेल में फ़िडलिंग से अधिक कुछ के लिए संभावित सुरक्षा खतरे के लायक नहीं है।
ए। विल्सन

3
eval ('[' + text + ']') a, b, c को चर के रूप में मानेंगे, न कि स्ट्रिंग के रूप में।
फबीन

1
नीच क्योंकि दो प्रस्तावित समाधान पूरी तरह से अलग चीजें करते हैं, और यह उत्तर पाठ में किसी भी तरह से समझाया नहीं गया है। हालांकि प्रश्न स्वयं स्पष्ट नहीं है, लेकिन उत्तर में यह स्पष्ट किया जाना चाहिए कि दो समाधान समान विकल्प नहीं हैं, लेकिन प्रश्न की व्याख्या अलग है।
मत्तेओ इटालिया

179

बस मौजूदा उत्तरों को जोड़ने के लिए: उम्मीद है, आप भविष्य में इस तरह से कुछ और सामना करेंगे:

>>> 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'

4
हालाँकि मैं आपसे सहमत हूँ कि @ कैमरून का जवाब "अभी" था, लेकिन मुझे लगता है कि आपकी पूरी तरह से यह अधिक सही उत्तर है। हमें शायद ही कभी वास्तविक दुनिया में अलग-अलग तार दिए गए हैं और यह जानना अच्छा है कि प्रारूप की परवाह किए बिना सूची में कैसे परिवर्तित किया जाए।
ट्रिस्टिइज़िमरमैन

39

निम्नलिखित पायथन कोड आपके स्ट्रिंग को स्ट्रिंग की सूची में बदल देगा:

import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)

3
वे jsonउदाहरण के लिए भी इस्तेमाल कर सकते हैं :json.loads(teststr)
मोहम्मद नाज़री

24

मुझे नहीं लगता कि आपको इसकी आवश्यकता है

अजगर में, शायद ही कभी आपको स्ट्रिंग को सूची में बदलने की आवश्यकता होती है, क्योंकि तार और सूचियां बहुत समान हैं

प्रकार बदलना

यदि आपके पास वास्तव में एक स्ट्रिंग है जो एक चरित्र सरणी होनी चाहिए, तो यह करें:

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

TLDR

तार सूची हैं। लगभग।


8

यदि आप रिक्त स्थान विभाजित करना चाहते हैं, तो आप इसका उपयोग कर सकते हैं .split():

a = 'mary had a little lamb'
z = a.split()
print z

आउटपुट:

['mary', 'had', 'a', 'little', 'lamb'] 

यह आउटपुट के बीच में है (), यानी कुछ भी नहीं है।
एंथन

7

यदि आप वास्तव में सरणियाँ चाहते हैं:

>>> 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'

1
जिज्ञासा से बाहर, आपने मायरे = सरणी ('ग', पाठ) के बाद, "ग" कहाँ चला गया? यदि आप सरणी टाइप करते हैं, तो आपको सरणी ("सी", "एबीसी") मिला है, लेकिन एक [0] == ए? धन्यवाद
Clinteney हुई

@ क्लिंटनै: 'सी' का अर्थ है "वर्णों की एक सरणी बनाएं"। अधिक जानकारी के लिए डॉक्स देखें
कैमरन

मैंने उत्थान किया है, लेकिन बहुत जल्दी। मैं प्राप्त सरणी ( 'सी', '1 1 91 0.001 228') जब बुला एक = सरणी ( 'सी', ई) जहां ई = "1 1 91 0.001 228"
वैलेन्टिन Heinitz

@ValentinHeinitz हाँ, यह वही है जो आपको मेरे उदाहरण में दिखाया जाना चाहिए। आप क्या उम्मीद करते हैं ?
शोकाकुल

1
@ मोजैकिन: ठीक है, मैं समझ गया। यह उत्तर के साथ सब ठीक है। मैं प्रश्न "पाठ == [ए, बी, सी]" "पाठ == [['ए', 'बी'," सी "]"
वैलेंटाइन हेनिट्ज २५'१४

4
m = '[[1,2,3],[4,5,6],[7,8,9]]'

m= eval(m.split()[0])

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

कृपया अपने कोड के साथ कुछ अतिरिक्त जानकारी प्रदान करें ताकि मूल पोस्टर बेहतर ढंग से समझ सके कि यह उसकी समस्या का समाधान कैसे करता है।
इवान

4

सभी उत्तर अच्छे हैं, करने का एक और तरीका है, जो सूची की समझ है, नीचे दिए गए समाधान देखें।

u = "UUUDDD"

lst = [x for x in u]

अल्पविराम से अलग सूची के लिए निम्नलिखित कार्य करें

u = "U,U,U,D,D,D"

lst = [x for x in u.split(',')]

मैं छोरों के लिए एक भी लाइन नहीं समझता और कभी नहीं
श्रीमान पिज्जा

1
@MrPizzaGuy यह आसान है और बहुत आसान है जब आप इसका इस्तेमाल करते हैं, इस जाँच youtube.com/watch?v=AhSvKGTh28Q
waghydjemy

1

मैं आमतौर पर उपयोग करता हूं:

l = [ word.strip() for word in text.split(',') ]

stripशब्दों के आसपास निकालें रिक्त स्थान।


1

मेरे द्वारा लिखे 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

0
# to strip `,` and `.` from a string ->

>>> 'a,b,c.'.translate(None, ',.')
'abc'

आपको translateस्ट्रिंग्स के लिए अंतर्निहित विधि का उपयोग करना चाहिए ।

help('abc'.translate)अधिक जानकारी के लिए पायथन शेल में टाइप करें ।



0

उदाहरण 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"]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.