关于正则表达式:拆分字符串并删除空格Python

Splitting string and removing whitespace Python

我想用逗号','拆分一个字符串,并从每个拆分的开始和结束处删除空白。

例如,如果我有字符串:

"QVOD, Baidu Player"

我想拆分并剥离到:

['QVOD', 'Baidu Player']

有优雅的方式吗?可能使用列表理解?


python有一个名为split的功能,可以防止您使用regex或类似的东西。只需调用my_string.split(delimiter)就可以拆分字符串。

之后,python将拥有一个strip函数,该函数将从字符串的开头和结尾删除所有空白。

1
[item.strip() for item in my_string.split(',')]

两种方法的基准如下:

1
2
3
4
5
6
7
>>> import timeit
>>> timeit.timeit('map(str.strip,"QVOD, Baidu Player".split(","))', number=100000)
0.3525350093841553
>>> timeit.timeit('map(stripper,"QVOD, Baidu Player".split(","))','stripper=str.strip', number=100000)
0.31575989723205566
>>> timeit.timeit("[item.strip() for item in 'QVOD, Baidu Player'.split(',')]", number=100000)
0.246596097946167

所以列表比较比地图快33%。

或许也值得注意的是,就"Python"而言,圭多自己也投了连卡佛的票。http://www.artima.com/weblogs/viewpost.jsp?线程=98196


一点实用的方法。split函数,根据,拆分字符串,每个元素由str.stripmap剥离。

1
2
3
>>> stripper = str.strip
>>> map(stripper,"QVOD, Baidu Player".split(","))
['QVOD', 'Baidu Player']

时间比较少

1
2
3
4
import timeit
stripper = str.strip
print timeit.timeit('map(stripper,"QVOD, Baidu Player".split(","))',"from __main__ import stripper", number=100000)
print timeit.timeit("[item.strip() for item in 'QVOD, Baidu Player'.split(',')]", number=100000)

我机器上的输出

1
2
0.553178071976
0.569463968277

因此,列表理解方法和map方法的性能几乎相同。