Remove all whitespace in a string in Python
我想从一个字符串、两端和单词之间消除所有空白。
我有这个python代码:
1 2 3 | def my_handle(self): sentence = ' hello apple ' sentence.strip() |
但这只会消除字符串两边的空白。如何删除所有空白?
如果要删除前导空格和结束空格,请使用
1 2 3 | sentence = ' hello apple' sentence.strip() >>> 'hello apple' |
如果要删除所有空间,请使用
1 2 3 | sentence = ' hello apple' sentence.replace("","") >>> 'helloapple' |
如果要删除重复的空格,请使用
1 2 3 | sentence = ' hello apple' "".join(sentence.split()) >>> 'hello apple' |
要只删除空格,请使用
1 | sentence = sentence.replace(' ', '') |
要删除所有空白字符(空格、制表符、换行符等),可以先使用
1 | sentence = ''.join(sentence.split()) |
或正则表达式:
1 2 3 | import re pattern = re.compile(r'\s+') sentence = re.sub(pattern, '', sentence) |
如果只想从开头和结尾删除空白,可以使用
1 | sentence = sentence.strip() |
也可以使用
另一种选择是使用正则表达式并匹配这些奇怪的空白字符。以下是一些例子:
删除字符串中的所有空格,即使是单词之间:
1 2 | import re sentence = re.sub(r"\s+","", sentence, flags=re.UNICODE) |
删除字符串开头的空格:
1 2 | import re sentence = re.sub(r"^\s+","", sentence, flags=re.UNICODE) |
删除字符串末尾的空格:
1 2 | import re sentence = re.sub(r"\s+$","", sentence, flags=re.UNICODE) |
删除字符串开头和结尾的空格:
1 2 | import re sentence = re.sub("^\s+|\s+$","", sentence, flags=re.UNICODE) |
仅删除重复的空格:
1 2 | import re sentence ="".join(re.split("\s+", sentence, flags=re.UNICODE)) |
(所有示例都适用于python 2和python 3)
空白包括空格、制表符和CRLF。因此,我们可以使用一个优雅的一行字符串函数translate:
1 2 3 | ' hello apple'.translate(None, ' \t ') |
或者如果你想彻底:
1 2 | import string ' hello apple'.translate(None, string.whitespace) |
要从开始和结束删除空白,请使用
1 2 | >>" foo bar ".strip() "foo bar" |
1 2 3 4 | ' hello \tapple'.translate( { ord(c):None for c in ' \t ' } ) |
Mak已经指出了上面的"翻译"方法。这种变化适用于python 3(参见这个问题)。
小心:
如果只替换空格和制表符,则可以使用隐藏的CRLF结尾,这些CRLF看起来与您要查找的内容相匹配,但并不相同。
1 2 3 4 | import re sentence = ' hello apple' re.sub(' ','',sentence) #helloworld (remove all spaces) re.sub(' ',' ',sentence) #hello world (remove double spaces) |
此外,条带也有一些变化:
删除字符串开头和结尾的空格:
1 | sentence= sentence.strip() |
删除字符串开头的空格:
1 | sentence = sentence.lstrip() |
删除字符串末尾的空格:
1 | sentence= sentence.rstrip() |
所有三个字符串函数
1 2 | " 1. Step 1 ".strip("") |
或者在读取字符串列表时可以删除多余的逗号:
1 | "1,2,3,".strip(",") |