2012-01-19 4 views
7

私のような文字列を持っている:私が行っていることであるPythonで文字列を変換するには?

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

::私が欲しいもの

searchString = "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 

しかし、私はのpythonで最適化されたコードをしたいです2.6

おかげ

+0

[Python - regex - 単語の前に文字を分割する]の可能な複製(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を持っているときにのみ分割したがは、これらのトークンを消費しません。

関連する問題