मैंने एक स्ट्रिंग को वर्णों में विभाजित करने के उत्तर के लिए वेब के चारों ओर देखने की कोशिश की है, लेकिन मुझे एक सरल विधि नहीं मिल सकती है
str.split(//)
लगता है रूबी काम नहीं करती। क्या लूपिंग के बिना ऐसा करने का एक सरल तरीका है?
मैंने एक स्ट्रिंग को वर्णों में विभाजित करने के उत्तर के लिए वेब के चारों ओर देखने की कोशिश की है, लेकिन मुझे एक सरल विधि नहीं मिल सकती है
str.split(//)
लगता है रूबी काम नहीं करती। क्या लूपिंग के बिना ऐसा करने का एक सरल तरीका है?
जवाबों:
>>> s = "foobar"
>>> list(s)
['f', 'o', 'o', 'b', 'a', 'r']
आपको सूची चाहिए
cast_method = lambda x: [x]
आप स्ट्रिंग लेते हैं और इसे सूची में पास करते हैं ()
s = "mystring"
l = list(s)
print l
आप इसे बिना सूची के भी बहुत सरल तरीके से कर सकते हैं ():
>>> [c for c in "foobar"]
['f', 'o', 'o', 'b', 'a', 'r']
for
, समझाने के लिए बहुत कुछ नहीं है। मुझे लगता है कि आपको डेटा संरचनाओं पर अजगर ट्यूटोरियल पढ़ना चाहिए , विशेष रूप से सूची समझ।
list(map(lambda c: c, iter("foobar")))
, लेकिन अधिक पठनीय और सार्थक है।
यदि आप एक बार में अपने स्ट्रिंग एक चरित्र को संसाधित करना चाहते हैं। आपके पास विभिन्न विकल्प हैं।
uhello = u'Hello\u0020World'
सूची समझ का उपयोग करना:
print([x for x in uhello])
आउटपुट:
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
मानचित्र का उपयोग करना:
print(list(map(lambda c2: c2, uhello)))
आउटपुट:
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
निर्मित में सूची समारोह:
print(list(uhello))
आउटपुट:
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
लूप के लिए उपयोग करना:
for c in uhello:
print(c)
आउटपुट:
H
e
l
l
o
W
o
r
l
d
मैंने इस कार्य को पूरा करने के लिए दो और तरीके खोजे। यह किसी के लिए मददगार हो सकता है।
पहला आसान है:
In [25]: a = []
In [26]: s = 'foobar'
In [27]: a += s
In [28]: a
Out[28]: ['f', 'o', 'o', 'b', 'a', 'r']
और दूसरा एक उपयोग map
और lambda
फ़ंक्शन। यह अधिक जटिल कार्यों के लिए उपयुक्त हो सकता है:
In [36]: s = 'foobar12'
In [37]: a = map(lambda c: c, s)
In [38]: a
Out[38]: ['f', 'o', 'o', 'b', 'a', 'r', '1', '2']
उदाहरण के लिए
# isdigit, isspace or another facilities such as regexp may be used
In [40]: a = map(lambda c: c if c.isalpha() else '', s)
In [41]: a
Out[41]: ['f', 'o', 'o', 'b', 'a', 'r', '', '']
अधिक तरीकों के लिए अजगर डॉक्स देखें
कार्य स्ट्रिंग के पात्रों पर पुनरावृत्ति करने और उन्हें एक सूची में इकट्ठा करने के लिए उबालता है। सबसे भोला समाधान दिखेगा
result = []
for character in string:
result.append(character)
बेशक, इसे छोटा किया जा सकता है
result = [character for character in string]
लेकिन अभी भी छोटे समाधान हैं जो एक ही काम करते हैं।
list
कंस्ट्रक्टर का उपयोग किसी भी चलने योग्य ( पुनरावृत्तियों , सूचियों, ट्यूपल्स, स्ट्रिंग आदि) को सूची में बदलने के लिए किया जा सकता है ।
>>> list('abc')
['a', 'b', 'c']
बड़ा प्लस यह है कि यह पायथन 2 और पायथन 3 दोनों में समान काम करता है।
इसके अलावा, पायथन 3.5 से शुरू (भयानक PEP 448 के लिए धन्यवाद ) अब किसी भी पुनरावृत्ति से खाली सूची को शाब्दिक रूप से खोलकर सूची बनाना संभव है:
>>> [*'abc']
['a', 'b', 'c']
यह neater है, और कुछ मामलों में list
सीधे कंस्ट्रक्टर को कॉल करने की तुलना में अधिक कुशल है ।
मैं का उपयोग कर के खिलाफ सलाह देंगे map
, आधारित दृष्टिकोण क्योंकि map
है नहीं पायथन 3. देखें में एक सूची प्रदान उपयोग फिल्टर, नक्शे कैसे, और अजगर 3 में कम हो ।
split()
इनबिल्ट फ़ंक्शन केवल कुछ शर्त के आधार पर मूल्य को अलग करेगा लेकिन एकल शब्द में, यह शर्त को पूरा नहीं कर सकता है। तो, यह की मदद से हल किया जा सकता हैlist()
। यह आंतरिक रूप से एरे को बुलाता है और यह एक सरणी के आधार पर मूल्य को संग्रहीत करेगा।
मान लीजिए,
a = "bottle"
a.split() // will only return the word but not split the every single char.
a = "bottle"
list(a) // will separate ['b','o','t','t','l','e']
उन्हें अनपैक करें:
word = "Paralelepipedo"
print([*word])
यदि आप केवल स्ट्रिंग तक पहुंच पढ़ना चाहते हैं, तो आप सीधे सरणी संकेतन का उपयोग कर सकते हैं।
Python 2.7.6 (default, Mar 22 2014, 22:59:38)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> t = 'my string'
>>> t[1]
'y'
Regexp का उपयोग किए बिना परीक्षण के लिए उपयोगी हो सकता है। क्या स्ट्रिंग में एक समाप्त होने वाली न्यूलाइन है?
>>> t[-1] == '\n'
False
>>> t = 'my string\n'
>>> t[-1] == '\n'
True
खैर, जितना मैं सूची (ओं) के संस्करण को पसंद करता हूं, यहां एक और क्रिया तरीका मुझे मिला (लेकिन यह अच्छा है इसलिए मैंने सोचा कि मैं इसे मैदान में जोड़ दूंगा):
>>> text = "My hovercraft is full of eels"
>>> [text[i] for i in range(len(text))]
['M', 'y', ' ', 'h', 'o', 'v', 'e', 'r', 'c', 'r', 'a', 'f', 't', ' ', 'i', 's', ' ', 'f', 'u', 'l', 'l', ' ', 'o', 'f', ' ', 'e', 'e', 'l', 's']
camelcase = ''.join([text[i].upper() if i % 2 else text[i].lower() for i in range(len(text))])
>>> for i in range(len(a)):
... print a[i]
...
जहां एक स्ट्रिंग है जिसे आप अलग करना चाहते हैं। मान "एक [i]" स्ट्रिंग के व्यक्तिगत चरित्र हैं जिन्हें एक सूची में जोड़ा जा सकता है।
for c in a: print c
अधिक प्रत्यक्ष है