从字符串中删除空格的首选方法

时间:2012-12-02 00:15:58

标签: python string whitespace

我想删除字符串中的所有空格。

  

“as fa sdf sdfsdf”

结果将是:

  

“asfasdfsdfsdf”

我有几种方法可以实现这一点,我想知道哪一种是最好的。

1

"".join(" as fa   sdf sdfsdf ".split())

2

" as fa   sdf sdfsdf ".replace(" ", "")

我认为还有更多 哪一个更受欢迎?

8 个答案:

答案 0 :(得分:6)

我认为最好和最有效的方法是第二个版本" as fa sdf sdfsdf ".replace(" ", ""),作为您可以使用timeit模块的证据:

  • python -m timeit '"".join(" as fa sdf sdfsdf ".split())'

    1000000 loops, best of 3: 0.554 usec per loop

  • python -m timeit '" as fa sdf sdfsdf ".replace(" ", "")'

    1000000 loops, best of 3: 0.405 usec per loop

答案 1 :(得分:4)

replace(" ", "")是最清晰,最简洁的。

答案 2 :(得分:4)

使用此功能一次性删除所有空格:

import re

s = ' as fa   sdf sdfsdf '
s = re.sub(r'\s+', '', s)

s
=> 'asfasdfsdfsdf'

这种方法的优点是它消除了字符之间的所有空格 - 一个,两个,无论有多少,因为正则表达式r'\s+'匹配“一个或多个”空格字符 - 包括空格,制表符等。

答案 3 :(得分:2)

使用replace不会删除所有空格字符(例如换行符,制表符):

>>> 'abc\t\ndef'.replace(" ", "")
'abc\t\ndef'

我更喜欢string.translate

>>> import string
>>> 'abc\t\ndef'.translate(None, string.whitespace)
'abcdef'

编辑:string.translate不适用于Unicode字符串;您可能希望改为使用re.sub('\s', '', 'abc\n\tdef')

答案 4 :(得分:2)

正则表达式

>>> str = "   as fa sdf sdfsdf  "
>>> import re
>>> re.sub(r'\s', '', str)

答案 5 :(得分:1)

re.sub(" ","", s)是我最喜欢的。

答案 6 :(得分:1)

只是在混合中抛出另一个:

from string import whitespace
ws = set(whitespace)
''.join(ch for ch in my_string if ch not in ws)

答案 7 :(得分:0)

正则表达式很简单,它的工作原理。 split()稍微复杂一些。正则表达优先于split()