拆分字符串并删除空格 Python
Posted
技术标签:
【中文标题】拆分字符串并删除空格 Python【英文标题】:Splitting string and removing whitespace Python 【发布时间】:2014-02-11 05:39:51 【问题描述】:我想用逗号','
拆分字符串,并从每个拆分的开头和结尾删除空格。
例如,如果我有字符串:
"QVOD, Baidu Player"
我想拆分并剥离到:
['QVOD', 'Baidu Player']
有没有一种优雅的方式来做到这一点?可能使用列表推导式?
【问题讨论】:
数据的格式是否始终相同? this question 的可能重复项。不完全,但你可以在那里找到你需要的所有答案。 @Kraay89 这不是您链接到的问题的副本。 【参考方案1】: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
【讨论】:
@DSM 哎呀,我的错。感谢您了解这一点。 谢谢我已经尝试过这样的事情,每个部分QVOD
ect.. 都放在一个新行上。下面的答案很有效,因为所有内容都在列表中。
@DanielPilch:这两种方法产生相同的列表。
@SlaterTyranus 请检查更新的代码。这可能几乎与 LC 一样快。
@thefourtheye 比其他版本快,但仍然明显比 LC 慢【参考方案2】:
一点实用的方法。 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 comprehension 方法和map
方法的执行几乎相同。
【讨论】:
为什么要将str.strip
分配给变量?为什么不直接传过去-map(str.strip, "QVOD, Baidu Player".split(","))
@pyrospade 不必每次都来自str
。所以,性能提升很小:)
@thefourtheye 真的吗?我想当您将str.strip
传递给map(function, sequence)
时,它会被分配给function
参数并在本地用作变量。
@thefourtheye 你运行的是什么版本的python?以上是关于拆分字符串并删除空格 Python的主要内容,如果未能解决你的问题,请参考以下文章