2011-05-09 18 views
6

द्वारा पायथन में एक स्ट्रिंग को विभाजित करना मुझे व्हाइटस्पेस को बनाए रखने के दौरान शब्द सीमाओं (व्हाइटस्पेस) पर एक स्ट्रिंग को विभाजित करने की आवश्यकता है।एक नियमित अभिव्यक्ति

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

'this is a\nsentence' 

बन चाहेंगे

['this', ' ', 'is', ' ', 'a' '\n', 'sentence'] 

मैं के बारे में str.partition और re.split पता है, लेकिन उनमें से कोई भी काफी मैं क्या चाहते हैं और वहाँ कोई re.partition है।

मुझे उचित दक्षता के साथ पायथन में व्हाइटस्पेस पर तारों को कैसे विभाजित करना चाहिए?

उत्तर

11

इस प्रयास करें:

s = "this is a\nsentence" 
re.split(r'(\W+)', s) # Notice parentheses and a plus sign. 

परिणाम होगा:

['this', ' ', 'is', ' ', 'a', '\n', 'sentence'] 
+1

धन्यवाद। मुझे 're.split' दस्तावेज़ों को अधिक सावधानी से पढ़ना चाहिए था। –

3

इस प्रयास करें: फिर से में खाली स्थान के की

re.split('(\W+)','this is a\nsentence') 
4

प्रतीक '\ s' नहीं है ' \ डब्ल्यू '

की तुलना करें:

import re 


s = "With a sign # written @ the beginning , that's a\nsentence,"\ 
    '\nno more an instruction!,\tyou know ?? "Cases" & and surprises:'\ 
    "that will 'lways unknown **before**, in 81% of time$" 


a = re.split('(\W+)', s) 
print a 
print len(a) 
print 

b = re.split('(\s+)', s) 
print b 
print len(b) 

पैदा करता

['With', ' ', 'a', ' ', 'sign', ' # ', 'written', ' @ ', 'the', ' ', 'beginning', ' , ', 'that', "'", 's', ' ', 'a', '\n', 'sentence', ',\n', 'no', ' ', 'more', ' ', 'an', ' ', 'instruction', '!,\t', 'you', ' ', 'know', ' ?? "', 'Cases', '" & ', 'and', ' ', 'surprises', ':', 'that', ' ', 'will', " '", 'lways', ' ', 'unknown', ' **', 'before', '**, ', 'in', ' ', '81', '% ', 'of', ' ', 'time', '$', ''] 
57 

['With', ' ', 'a', ' ', 'sign', ' ', '#', ' ', 'written', ' ', '@', ' ', 'the', ' ', 'beginning', ' ', ',', ' ', "that's", ' ', 'a', '\n', 'sentence,', '\n', 'no', ' ', 'more', ' ', 'an', ' ', 'instruction!,', '\t', 'you', ' ', 'know', ' ', '??', ' ', '"Cases"', ' ', '&', ' ', 'and', ' ', 'surprises:that', ' ', 'will', ' ', "'lways", ' ', 'unknown', ' ', '**before**,', ' ', 'in', ' ', '81%', ' ', 'of', ' ', 'time$'] 
61 
संबंधित मुद्दे