[英]string to list conversion in python?
I have a string like : 我有一个字符串:
searchString = "u:sads asdas asdsad n:sadasda as:adds sdasd dasd a:sed eee"
what I want is list : 我想要的是列表:
["u:sads asdas asdsad","n:sadasda","as:adds sdasd dasd","a:sed eee"]
What I have done is : 我所做的是:
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
But I want an optimized code in python 2.6 . 但我想在python 2.6中优化代码。
Thanks 谢谢
Use regular expressions: 使用正则表达式:
import re
mylist= re.split('\s+(?=\w+:)', searchString)
This splits the string everywhere there's a space followed by one or more letters and a colon. 这会将字符串分割到一个空格,后跟一个或多个字母和冒号。 The look-ahead (
(?=
part) makes it split on the whitespace while keeping the \\w+:
parts 前瞻(
(?=
部分)使其在空格上分割,同时保持\\w+:
部分
You can use "look ahead" feature offered by a lot of regular expression engines. 您可以使用许多正则表达式引擎提供的“向前看”功能。 Basically, the regex engines checks for a pattern without consuming it when it comes to look ahead.
基本上,正则表达式引擎在前瞻时检查模式而不消耗它。
import re
s = "u:sads asdas asdsad n:sadasda as:adds sdasd dasd a:sed eee"
re.split(r'\s(?=[a-z]:)', s)
This means, split only when we have a \\s
followed by any letter and a colon but don't consume those tokens. 这意味着,只有当我们有一个
\\s
后跟任何字母和冒号但不消耗这些令牌时才会拆分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.