需要使用过滤器从给定字符串中删除空格

时间:2017-12-18 08:48:35

标签: python python-2.7 filter

我的印象是以下代码:

filter(None,"Stack Overflow")

将返回:

"StackOverflow"

但是当我使用Python(2.7)时没有发生这种情况。有人可以告诉我为什么会这样吗?

3 个答案:

答案 0 :(得分:5)

您似乎想要过滤掉空格,但空格不是FalseNone搜索的空间),因此请明确检查空格:

filter(lambda x: x!=' ',"Stack Overflow")

此外,如果您只处理字符串,请不要忘记replace

"Stack Overflow".replace(' ', '')

答案 1 :(得分:2)

filter州的帮助

  

返回函数(item)为true的序列项。如果       function为None,返回真实的项目。

空格的布尔值为True,因此不会将其删除。

答案 2 :(得分:2)

您需要定义一个替换'':

的函数
filter(lambda x: x != ' ', 'Stack Overflow')

请参阅filter的文档。

当没有指定任何函数时,它只是比较元素是否是真实的,这是''以及任何其他字符的情况。为了更好地理解,请参阅此示例,其中None是一个假值,因此从列表中删除:

filter(None, ['S', 't', 'a', 'c', 'k', None, 'O', 'v', 'e', 'r', 'f', 'l', 'o', 'w'])