2008-09-22 10 views
12

क्या पाइथन में परिणामस्वरूप सूची में रिक्त स्थान को अनदेखा किए बिना स्ट्रिंग को विभाजित करने के लिए कोई फ़ंक्शन है?क्या पाइथन में रिक्त स्थान को अनदेखा किए बिना स्ट्रिंग को विभाजित करने के लिए कोई फ़ंक्शन है?

उदाहरण के लिए:

s="This is the string I want to split".split() 

मुझे देता है

>>> s 
['This', 'is', 'the', 'string', 'I', 'want', 'to', 'split'] 

मैं चाहता हूँ की तरह

['This',' ','is',' ', 'the',' ','string', ' ', .....] 

उत्तर

40
>>> import re 
>>> re.split(r"(\s+)", "This is the string I want to split") 
['This', ' ', 'is', ' ', 'the', ' ', 'string', ' ', 'I', ' ', 'want', ' ', 'to', ' ', 'split'] 

re.split में कैप्चरिंग कोष्ठकों (का उपयोग करते हुए) समारोह का कारण बनता है विभाजक भी वापस करने के लिए।

+0

यह ऊपर पोस्ट किए गए एक से क्लीनर समाधान है। – rossp

1

तुम क्या करने की कोशिश कर रहे हैं क्या साथ कठिन हिस्सा कुछ है कि आप नहीं कर रहे हैं इसे विभाजित करने के लिए एक चरित्र दे रहा है। विभाजन() आपके द्वारा प्रदान किए जाने वाले चरित्र पर एक स्ट्रिंग को विस्फोट करता है, और उस चरित्र को हटा देता है।

शायद यह मदद मिल सकती है:

s = "String to split" 
mylist = [] 
for item in s.split(): 
    mylist.append(item) 
    mylist.append(' ') 
mylist = mylist[:-1] 

गन्दा है, लेकिन यह आप के लिए चाल कर दूँगा ...

+0

... – Mez

+0

मैं सिर्फ यह नवीनीकृत किया है कोड करने के लिए आर अंतिम स्थान को हटा दें। उस ने कहा, यह अभी भी ऐसा करने का सबसे अच्छा तरीका नहीं है, बस * ए * इसे करने का तरीका :) – rossp

4

मुझे नहीं लगता कि मानक पुस्तकालय है कि करता है कि अपने आप में एक समारोह में वहाँ है, लेकिन है "विभाजन" आता है करीब

सबसे अच्छा तरीका शायद रेगुलर एक्सप्रेशन का उपयोग करने के लिए है (जो मैं कैसे करना चाहते हैं किसी भी भाषा में इस)

import re 
print re.split(r"(\s+)", "Your string here") 
2
बस की बिल्ली के लिए

बेवकूफ जवाब:

mystring.replace(" ","! !").split("!") 
एक अतिरिक्त स्थान कि अंत में मौजूद नहीं है के साथ
संबंधित मुद्दे

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