字符串列出python中的转换?

时间:2012-01-19 09:11:43

标签: python regex

我有一个字符串:

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

但我想在 python 2.6 中使用优化代码。

由于

2 个答案:

答案 0 :(得分:12)

使用正则表达式:

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

这会将字符串拆分到一个空格,后跟一个或多个字母和冒号。前瞻((?=部分)使其在空格上分割,同时保留\w+:部分

答案 1 :(得分: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后跟任意字母和冒号但使用这些代币时才会拆分。