Python删除一个string中的所有空格

我想消除string,两端和单词之间的所有空白。

我有这个Python代码:

def my_handle(self): sentence = ' hello apple ' sentence.strip() 

但是,这只消除了string两边的空格。 我如何删除所有空白?

如果要删除前导空格和结束空格,请使用str.strip()

 sentence = ' hello apple' sentence.strip() >>> 'hello apple' 

如果你想删除所有的空格,使用str.replace()

 sentence = ' hello apple' sentence.replace(" ", "") >>> 'helloapple' 

如果你想删除重复的空格,使用str.split()

 sentence = ' hello apple' " ".join(sentence.split()) >>> 'hello apple' 

要删除只有空格使用str.replace

 sentence = sentence.replace(' ', '') 

要删除所有空白字符 (空格,制表符,换行符等),可以使用split然后join

 sentence = ''.join(sentence.split()) 

或正则expression式:

 import re pattern = re.compile(r'\s+') sentence = re.sub(pattern, '', sentence) 

如果你只想从开始和结束删除空格,你可以使用strip

 sentence = sentence.strip() 

您还可以使用lstrip从string的开始处删除空格,并使用rstrip从string的末尾删除空格。

如果您还想删除unicode中存在的所有其他奇怪的空白字符,可以使用re.UN和re.UNICODE参数:

 sentence = re.sub(r"\s+", "", sentence, flags=re.UNICODE) 

…因为你真的想保留这些奇怪的Unicode字符 ?

空格包括空格,制表符和CRLF 。 因此,我们可以使用的一个优雅的单行string函数是翻译 (惊讶没有人提到它!)

' hello apple'.translate(None, ' \n\t\r')

或者如果你想彻底

 import string ' hello apple'.translate(None, string.whitespace) 

要从开始和结束删除空白,请使用strip

 >> " foo bar ".strip() "foo bar" 
 ' hello \n\tapple'.translate( { ord(c):None for c in ' \n\t\r' } ) 

MaK已经指出了上面的“翻译”方法。 而这种变化与Python 3一起工作(参见本问答 )。

小心:

strip创build一个rstrip和lstrip(删除前导和尾随空格,制表符,返回和表单提要,但不会在string中间删除它们)

如果您只replace空格和制表符,您可以隐藏的CRLF看起来与您正在查找的内容相匹配,但不一样

 import re sentence = ' hello apple' re.sub(' ','',sentence) #helloworld (remove all spaces) re.sub(' ',' ',sentence) #hello world (remove double spaces)