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

我有这样的Python代码:

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

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


当前回答

在下面的脚本中,我们导入正则表达式模块,用于用一个空格替换一个或多个空格。这确保了内部多余的空间被删除。然后使用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)

其他回答

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

>>> 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

我发现这个方法最适合我:

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'

它删除了任何空白,制表符等。

另一种方法是使用正则表达式并匹配这些奇怪的空白字符。下面是一些例子:

删除字符串中的所有空格,甚至在单词之间:

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中都可以工作)

试试这个. .比起使用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()函数删除前导和尾随空格。

# 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)