我想删除字符串中的所有空格。
“as fa sdf sdfsdf”
结果将是:
“asfasdfsdfsdf”
我有几种方法可以实现这一点,我想知道哪一种是最好的。
1
"".join(" as fa sdf sdfsdf ".split())
2
" as fa sdf sdfsdf ".replace(" ", "")
我认为还有更多 哪一个更受欢迎?
答案 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()
。