协慌网

登录 贡献 社区

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

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

我有这个 Python 代码:

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

但这仅消除了字符串两侧的空白。如何删除所有空格?

答案

如果要删除str.strip()和结尾的空格,请使用str.strip()

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

如果要删除所有空格字符,请使用str.replace()

(注意,这只会删除 “普通” ASCII 空格字符' ' U+0020但不会删除任何其他空白

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())

或正则表达式:

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

如果只想从头到尾删除空格,可以使用strip

sentence = sentence.strip()

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

另一种选择是使用正则表达式并匹配这些奇怪的空格字符 。这里有些例子:

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

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

在字符串的开头删除空格:

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

删除字符串末尾的空格:

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

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

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

删除仅重复的空格:

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

(所有示例均可在 Python 2 和 Python 3 中使用)