【问题标题】:Need to remove spaces from a given string using filter需要使用过滤器从给定字符串中删除空格
【发布时间】:2017-12-18 08:48:35
【问题描述】:

我的印象是下面的代码:

filter(None,"Stack Overflow")

会返回:

"StackOverflow"

但是当我使用 Python (2.7) 时,这并没有发生。谁能告诉我为什么会这样?

【问题讨论】:

  • 在 python 3 上,filter 返回一个生成器对象。所以你必须使用''.join(filter...
  • docsIf function is None, the identity function is assumed, that is, all elements of iterable that are false are removed.

标签: python python-2.7 filter


【解决方案1】:

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

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

另外,如果你只处理字符串,别忘了replace

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

【讨论】:

  • 此外,过滤器需要加入python 3。现在没那么有趣了。
  • 正确 - 因为你得到了一台发电机。然而,这被标记为 2.7,但值得指出
【解决方案2】:

filter 状态的帮助

返回那些 function(item) 为真的序列项。如果 function 为 None,返回为 true 的项。

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

【讨论】:

    【解决方案3】:

    你需要定义一个替换''的函数:

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

    请参阅filter 的文档。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-23
      • 2019-11-05
      • 2011-09-21
      • 2017-11-20
      相关资源
      最近更新 更多