我想消除字符串的所有空白,在两端和单词之间。
我有这样的Python代码:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
但这只是消除了字符串两侧的空白。如何删除所有空白?
我想消除字符串的所有空白,在两端和单词之间。
我有这样的Python代码:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
但这只是消除了字符串两侧的空白。如何删除所有空白?
当前回答
试试这个. .比起使用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
其他回答
“空白”包括空格、制表符和CRLF。所以我们可以使用一个优雅的单行字符串函数str.translate:
Python 3
' hello apple '.translate(str.maketrans('', '', ' \n\t\r'))
或者如果你想要彻底:
import string
' hello apple'.translate(str.maketrans('', '', string.whitespace))
Python 2
' hello apple'.translate(None, ' \n\t\r')
或者如果你想要彻底:
import string
' hello apple'.translate(None, string.whitespace)
' hello \n\tapple'.translate({ord(c):None for c in ' \n\t\r'})
MaK已经在上面指出了“翻译”方法。这种变化适用于Python 3(请参阅此问答)。
如果要删除开头和结尾的空白,请使用strip。
>> " foo bar ".strip()
"foo bar"
import re
sentence = ' hello apple'
re.sub(' ','',sentence) #helloworld (remove all spaces)
re.sub(' ',' ',sentence) #hello world (remove double spaces)
小心:
Strip执行rstrip和lstrip(删除开头和结尾空格、制表符、返回值和表单提要,但不删除字符串中间的空格)。
如果你只替换空格和制表符,你最终会得到隐藏的crlf,它们看起来与你正在寻找的内容相匹配,但并不相同。