我想消除字符串的所有空白,在两端和单词之间。
我有这样的Python代码:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
但这只是消除了字符串两侧的空白。如何删除所有空白?
我想消除字符串的所有空白,在两端和单词之间。
我有这样的Python代码:
def my_handle(self):
sentence = ' hello apple '
sentence.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
sentence = re.sub(r"\s+", "", sentence, flags=re.UNICODE)
删除字符串开头的空格:
import re
sentence = re.sub(r"^\s+", "", sentence, flags=re.UNICODE)
删除字符串END中的空格:
import re
sentence = re.sub(r"\s+$", "", sentence, flags=re.UNICODE)
删除字符串的begin和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中都可以工作)
我发现这个方法最适合我:
test_string = ' test a s test '
string_list = [s.strip() for s in str(test_string).split()]
final_string = ' '.join(string_array)
# final_string: 'test a s test'
它删除了任何空白,制表符等。
如果要删除开头和结尾的空白,请使用strip。
>> " foo bar ".strip()
"foo bar"
在下面的脚本中,我们导入正则表达式模块,用于用一个空格替换一个或多个空格。这确保了内部多余的空间被删除。然后使用strip()函数删除前导和尾随空格。
# Import regular expression module
import re
# Initialize string
a = " foo bar "
# First replace any number of spaces with a single space
a = re.sub(' +', ' ', a)
# Then strip any leading and trailing spaces.
a = a.strip()
# Show results
print(a)
此外,strip还有一些变化:
删除字符串开头和结尾的空格:
sentence= sentence.strip()
删除字符串开头的空格:
sentence = sentence.lstrip()
删除字符串END中的空格:
sentence= sentence.rstrip()
这三个字符串函数都可以对lstrip和rstrip进行strip,默认为全空白。当你处理一些特殊的东西时,这是很有用的,例如,你可以只删除空格而不删除换行:
" 1. Step 1\n".strip(" ")
或者你可以在读入字符串列表时删除额外的逗号:
"1,2,3,".strip(",")