python字符串删除 - python忽略空格




在Python中删除一个字符串中的所有空格 (6)

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

删除字符串中的所有空格,甚至是单词之间:

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)

删除只有重复的空间:

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

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

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

我有这个Python代码:

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

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


另外, strip还有一些变化:

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

sentence= sentence.strip()

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

sentence = sentence.lstrip()

删除字符串END中的空格:

sentence= sentence.rstrip()

所有三个字符串函数strip lstrip ,并且rstrip可以将字符串的参数剥离,默认为全部空白。 当你使用某些特定的东西时,这会很有帮助,例如,你可以只删除空格而不是新行:

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

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

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

小心:

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

如果只替换空格和制表符,则最终可能会隐藏CRLF,这些隐藏的CRLF看起来与您正在查找的内容相匹配,但并不相同。


空白包括空格,制表符和CRLF 。 所以我们可以使用一个优雅的单线字符串函数来翻译

' 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(参见本问答 )。







removing-whitespace