基于正则expression式拆分string
我有一个表格forms的命令的输出。 我从结果文件parsing这个输出并将其存储在一个string中。 一行中的每个元素由一个或多个空格字符分隔,因此我使用正则expression式匹配一个或多个空格并对其进行分割。 但是,在每个元素之间插入一个空格:
>>> str1="abcd" # spaces are irregular >>> str1 'abcd' >>> str2=re.split("( )+", str1) >>> str2 ['a', ' ', 'b', ' ', 'c', ' ', 'd'] # 1 space element between!!!
有一个更好的方法吗?
每个拆分str2
被附加到列表后。
通过使用(
, )
,你正在捕获组,如果你只是删除它们,你将不会有这个问题。
>>> str1 = "abcd" >>> re.split(" +", str1) ['a', 'b', 'c', 'd']
然而,没有必要使用正则expression式,没有指定分隔符的str.split
将会以空格分隔给你。 这将是这种情况下最好的方法。
>>> str1.split() ['a', 'b', 'c', 'd']
如果你真的想要正则expression式,你可以使用这个( '\s'
代表空白,它更清晰):
>>> re.split("\s+", str1) ['a', 'b', 'c', 'd']
或者你可以find所有非空白字符
>>> re.findall(r'\S+',str1) ['a', 'b', 'c', 'd']
str.split
方法将自动删除项目之间的所有空白:
>>> str1 = "abcd" >>> str1.split() ['a', 'b', 'c', 'd']
文档在这里: http : //docs.python.org/library/stdtypes.html#str.split
当您使用re.split
并且分割模式包含捕获组时,组将保留在输出中。 如果你不想要这个,请使用非捕获组。
其实很简单。 尝试这个:
str1="abcd" splitStr1 = str1.split() print splitStr1