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)