我想用逗号','
拆分一个字符串,并从每个拆分的开头和结尾删除空格。
例如,如果我有字符串:
"QVOD, Baidu Player"
我想拆分并剥离:
['QVOD', 'Baidu Player']
有一种优雅的方式吗?可能使用列表理解?
答案 0 :(得分:10)
Python有一个名为split
的壮观功能,可以让你不必使用正则表达式或类似的东西。您只需拨打my_string.split(delimiter)
之后python有一个strip
函数,它将从字符串的开头和结尾删除所有空格。
[item.strip() for item in my_string.split(',')]
这两种方法的基准如下:
>>> 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%。
可能还值得注意的是,就“pythonic”而言,Guido自己投票支持LC。 http://www.artima.com/weblogs/viewpost.jsp?thread=98196
答案 1 :(得分:4)
一种小功能方法。 split
函数,根据,
拆分字符串,str.strip
将map
删除每个元素。
>>> stripper = str.strip
>>> map(stripper, "QVOD, Baidu Player".split(","))
['QVOD', 'Baidu Player']
很少的时间比较
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)
我机器上的输出
0.553178071976
0.569463968277
因此,List理解方法和map
方法的表现几乎相同。