Python 空间函数

Python isspace function

我在使用 isspace 函数时遇到问题。知道为什么我的代码是错误的以及如何修复它吗?

问题来了: 实现 get_num_of_non_WS_characters() 函数。 get_num_of_non_WS_characters() 有一个字符串参数和 returns 字符串中的字符数,不包括所有空格。

这是我的代码:

def get_num_of_non_WS_characters(s):

    count = 0
    for char in s: 
        if char.isspace():
            count = count + 1  
        return count

你想要空格,所以你应该使用not

def get_num_of_non_WS_characters(s):
    count = 0
    for char in s:
        if not char.isspace():
            count += 1
    return count

>>> get_num_of_non_WS_characters('hello')
5
>>> get_num_of_non_WS_characters('hello  ')
5

为了完整起见,可以使用生成器表达式更简洁地完成此操作

def get_num_of_non_WS_characters(s):
    return sum(1 for char in s if not char.isspace())

作为替代方案,您也可以简单地执行以下操作:

def get_num_of_non_WS_characters(s):
    return len(''.join(s.split()))

然后

s = 'i am a string'
get_num_of_non_WS_characters(s)

将return10

这还将删除制表符和换行符:

s = 'i am a string\nwith line break'
''.join(s.split())

会给

'iamastringwithlinebreak'

我只使用 n=s.replace(" " , "") 然后是 len(n)。 否则我认为你应该在 if 语句之后增加计数并在其中放置一个 continue。

@CoryKramer 回答的较短版本:

def get_num_of_non_WS_characters(s):
    return sum(not c.isspace() for c in s)