Python当string等于None时如何处理split?

时间:2017-11-09 07:24:03

标签: string python-3.x split

def SetLength(passedString):
    wordlength = passedString.split()
    print(passedString)
    print(len(wordlength))

SetLength("Python code to count the words")

这是我的代码来计算字符串中的单词现在这个工作正常,但是当我设置

str = None

SetLength(str)

这显示像这样的错误

'NoneType' object has no attribute 'split'

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

首先,您应该指定SetLength()的确切功能。当用参数None调用它应该做什么?

如果它应该处理这个,请相应地更改实现。

如果不允许,则相应地更改呼叫代码。

答案 1 :(得分:0)

快速解决方案是添加if:

...
if not passedString:
    passedString = ""
...

当然,这也可以在致电SetLength()之前完成,这样如果SetLength()为无,您就不会致电passedString

答案 2 :(得分:0)

错误完全有效。

你不能在None对象上调用.split,因为它没有该属性。

你需要做两件事之一:

  1. 您可以检查对象是否为" truthy":

    即:

    def SetLength(passedString):
        if passedString:
            wordlength = passedString.split()
            return len(wordlength)
    
        # if it's none, it will come here...
        # you probably want to return 0 as the length of words at that point
        return 0
    

    注意:对于空字符串,这也将返回0"&#34 ;;预期

  2. 您可以使用" isinstance"确保对象是一个字符串:

    即:

    def SetLength(passedString):
        if isinstance(passedString, str):
            wordlength = passedString.split()
            return len(wordlength)
    
        # if it's none, it will come here...
        # you probably want to return 0 as the length of words at that point
        return 0