我想消除字符串的所有空白,在两端和单词之间。
我有这样的Python代码:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
但这只是消除了字符串两侧的空白。如何删除所有空白?
我想消除字符串的所有空白,在两端和单词之间。
我有这样的Python代码:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
但这只是消除了字符串两侧的空白。如何删除所有空白?
当前回答
' hello \n\tapple'.translate({ord(c):None for c in ' \n\t\r'})
MaK已经在上面指出了“翻译”方法。这种变化适用于Python 3(请参阅此问答)。
其他回答
如果你想删除开头和结尾空格,使用str.strip():
>>> " hello apple ".strip()
'hello apple'
如果你想删除所有空格字符,使用str.replace()(注意,这只删除“正常的”ASCII空格字符' ' U+0020,而不删除任何其他空白字符):
>>> " hello apple ".replace(" ", "")
'helloapple'
如果你想删除重复的空格,使用str.split()后面跟着str.join():
>>> " ".join(" hello apple ".split())
'hello apple'
“空白”包括空格、制表符和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)
如果要删除开头和结尾的空白,请使用strip。
>> " foo bar ".strip()
"foo bar"
我发现这个方法最适合我:
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还有一些变化:
删除字符串开头和结尾的空格:
sentence= sentence.strip()
删除字符串开头的空格:
sentence = sentence.lstrip()
删除字符串END中的空格:
sentence= sentence.rstrip()
这三个字符串函数都可以对lstrip和rstrip进行strip,默认为全空白。当你处理一些特殊的东西时,这是很有用的,例如,你可以只删除空格而不删除换行:
" 1. Step 1\n".strip(" ")
或者你可以在读入字符串列表时删除额外的逗号:
"1,2,3,".strip(",")