拆分字符串并删除空格 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的主要内容,如果未能解决你的问题,请参考以下文章

Python:按分隔符列表拆分字符串

Python - 如何在拆分字符串时忽略双引号中的空格? [复制]

在Python中拆分具有未知数量空格的字符串作为分隔符

如何在python中拆分具有多个分隔符的字符串? [复制]

根据空格拆分字符串并在 angular2 中读取

c ++拆分字符串并获取空格后的部分