在Python中删除字符串中的所有空格

时间:2011-11-25 13:51:21

标签: python trim removing-whitespace

我想从字符串,两端和单词之间消除所有空格。

我有这个Python代码:

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

但这只会消除字符串两边的空白。如何删除所有空格?

12 个答案:

答案 0 :(得分:1406)

如果要删除前导和结尾空格,请使用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'

答案 1 :(得分:231)

要删除空格,请使用str.replace

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

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

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

或正则表达式:

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

如果您只想从开头和结尾删除空格,可以使用strip

sentence = sentence.strip()

您还可以使用lstrip仅从字符串的开头删除空格,并使用rstrip从字符串末尾删除空格。

答案 2 :(得分:76)

另一种方法是使用正则表达式并匹配these strange white-space characters。以下是一些例子:

删除字符串中的所有空格,即使是在单词之间:

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

删除字符串BEGINNING中的空格:

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

删除字符串END中的空格:

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

删除BEGINNING和字符串END中的空格:

import re
sentence = re.sub("^\s+|\s+$", "", sentence, flags=re.UNICODE)

仅删除DUPLICATE空格:

import re
sentence = " ".join(re.split("\s+", sentence, flags=re.UNICODE))

(所有示例都适用于Python 2和Python 3)

答案 3 :(得分:34)

空白包括空格,制表符和CRLF 。因此,我们可以使用的优雅且单行字符串函数是翻译

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

如果您想彻底:

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

答案 4 :(得分:18)

要从开头和结尾删除空格,请使用strip

>> "  foo bar   ".strip()
"foo bar"

答案 5 :(得分:6)

' hello  \n\tapple'.translate( { ord(c):None for c in ' \n\t\r' } )

MaK已经指出"翻译"上面的方法。这种变体适用于Python 3(参见this Q&A)。

答案 6 :(得分:4)

小心:

strip执行rstrip和lstrip(删除前导和尾随空格,制表符,返回和换页符,但不会在字符串中间删除它们。)

如果只替换空格和制表符,最终可能会出现与您要查找的内容相匹配的隐藏CRLF,但不一样。

答案 7 :(得分:3)

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

答案 8 :(得分:2)

此外,strip有一些变化:

删除字符串BEGINNING和END中的空格:

sentence= sentence.strip()

删除字符串BEGINNING中的空格:

sentence = sentence.lstrip()

删除字符串END中的空格:

sentence= sentence.rstrip()

所有三个字符串函数strip lstriprstrip都可以将字符串的参数删除,默认为全空格。当您使用某些特定内容时,这可能会有所帮助,例如,您只能删除空格而不能删除换行符:

" 1. Step 1\n".strip(" ")

或者您可以在读取字符串列表时删除额外的逗号:

"1,2,3,".strip(",")

答案 9 :(得分:2)

从字符串的两端和单词之间消除所有空格。

>>> import re
>>> re.sub("\s+", # one or more repetition of whitespace
    '', # replace with empty string (->remove)
    ''' hello
...    apple
... ''')
'helloapple'

Python文档:

答案 10 :(得分:0)

我使用 split() 忽略所有空格并使用 join() 连接 字符串。

sentence = ''.join(' hello  apple  '.split())
print(sentence) #=> 'helloapple'

我更喜欢这种方法,因为它只是一个表达式(而不是一个语句)。
使用方便,无需绑定变量即可使用。

print(''.join(' hello  apple  '.split())) # no need to binding to a variable

答案 11 :(得分:-1)

尝试这个..而不是使用re,我认为使用带有strip的拆分会更好

def my_handle(self):
    sentence = ' hello  apple  '
    ' '.join(x.strip() for x in sentence.split())
#hello apple
    ''.join(x.strip() for x in sentence.split())
#helloapple