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

我有这样的Python代码:

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

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


当前回答

小心:

Strip执行rstrip和lstrip(删除开头和结尾空格、制表符、返回值和表单提要,但不删除字符串中间的空格)。

如果你只替换空格和制表符,你最终会得到隐藏的crlf,它们看起来与你正在寻找的内容相匹配,但并不相同。

其他回答

小心:

Strip执行rstrip和lstrip(删除开头和结尾空格、制表符、返回值和表单提要,但不删除字符串中间的空格)。

如果你只替换空格和制表符,你最终会得到隐藏的crlf,它们看起来与你正在寻找的内容相匹配,但并不相同。

试试这个. .比起使用re,我认为使用split和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

此外,strip还有一些变化:

删除字符串开头和结尾的空格:

sentence= sentence.strip()

删除字符串开头的空格:

sentence = sentence.lstrip()

删除字符串END中的空格:

sentence= sentence.rstrip()

这三个字符串函数都可以对lstrip和rstrip进行strip,默认为全空白。当你处理一些特殊的东西时,这是很有用的,例如,你可以只删除空格而不删除换行:

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

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

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

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

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

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

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

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

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

https://en.wikipedia.org/wiki/Whitespace_character

Python文档:

https://docs.python.org/library/stdtypes.html#textseq https://docs.python.org/library/stdtypes.html#str.replace https://docs.python.org/library/string.html#string.replace https://docs.python.org/library/re.html#re.sub https://docs.python.org/library/re.html#regular-expression-syntax