2012-01-19 18 views
7

我有這樣的字符串:在python中列出轉換的字符串?

searchString = "u:sads asdas asdsad n:sadasda as:adds sdasd dasd a:sed eee" 

我要的是列表:

["u:sads asdas asdsad","n:sadasda","as:adds sdasd dasd","a:sed eee"] 

我所做的是:

values = re.split('\s', searchString) 
mylist = [] 
word = '' 
for elem in values: 
    if ':' in elem: 
    if word: 
     mylist.append(word) 
    word = elem 
    else: 
    word = word + ' ' + elem 
list.append(word) 
return mylist 

但我想在蟒蛇的優化代碼2.6

感謝

+0

可能重複的[Python - 正則表達式 - 在字之前分割字符串](http://stackoverflow.com/questions/6709067/python-regex-splitting-string-before-word) – outis

回答

12

使用正則表達式:

import re 
mylist= re.split('\s+(?=\w+:)', searchString) 

此分割字符串處處有一個空格,然後通過一個或多個字母和一個冒號。預見性((?=部分)使其在保留\w+:部件的同時保留空白區域

1

您可以使用許多正則表達式引擎提供的「向前看」功能。基本上,當展望未來時,正則表達式引擎會檢查一個模式而不消耗它。

import re 
s = "u:sads asdas asdsad n:sadasda as:adds sdasd dasd a:sed eee" 
re.split(r'\s(?=[a-z]:)', s) 

這意味着,只有拆分當我們有一個\s後跟任何字母和一個冒號,但消耗這些令牌。