Python中的Nonetype类型怎么判断

今天写了个爬虫,在抓取数据的时候遇到一个问题,我觉得如果不注意,这个问题很容易被忽略,所以特意在博客记录下:

问题描述:

比如,我在提取信息时,这样判断类型:

type(answers[0].find_all("table")[0].string)   

得到的结果为:

NoneType

所以,我就想,条件过滤的时候用is not 或者 != 就可以过滤了,比如这样尝试的时候:

type(answers[0].find_all("table")[0].string) is '''NoneType'''

结果我得到的是:

False

接下来,我用==来判断也是False,我就猜想,难到不能用type()来判断?

经过查找,发现Nonetype类型,其实就是值为None,所以直接判断值就可以了,比如这样:

answers[0].find_all("table")[0].string is None

得到的结果:

True

ok,到这里,问题就解决了,列表推导式直接得到结果:

answer_table  = [x.find_all("table")[0].string.strip() for x in answers if x.find_all("table")[0].string is not None]

answer_table 结果:

['水箱内部有没有通过,没有的话就是水箱堵了。', '我的小松也一样', '电控系统出现故障,电脑板传出的信号与实际动力不同,大泵与发动机动力不匹配发动机负荷重所以高温,动作慢', '换个新水箱,多页风扇', '这就是把水箱盖打开了,水流出来了,加点油门下水管就吸遍了。', '水箱堵了,拿下去专业悍水箱那输通,就ok', '如果缸垫没冲,就换水箱,我也准备换水箱。']

补充:Python对<type 'NoneType'>数据类型的处理

Python对象的概念

Python中,万物皆对象,所有的操作都是针对对象的,那什么是对象,5是一个int对象,‘oblong'是一个str对象,异常也是一个对象,抽象一点是,人,猫,狗也是一个对象

那对于一个对象,它就有包括两方面的特征:

属性:去描述它的特征

方法: 它所具有的行为

所以,对象=属性+方法 (其实方法也是一种属性,一种区别于数据属性的可调用属性)

把具有相同属性和方法的对象就可以归为一类,即Classl。类就好比是一张蓝图,使用一个类可以创建多个对象实例 ,即人,猫,狗都属于哺乳动物类

类是对象的抽象化,对象是类的实例化。

类不代表具体的事物,而对象表示具体的事物

类也是有属性和方法的。

数据类型也是对象

实际上Pyhton在面向对象程序设计时,才会有对象这个概念,而在面向过程型程序设计时,我们讨论最多的就是数据类型。

Python提供的基本数据类型主要有:布尔类型、整型、浮点型、字符串、列表、元组、集合、字典等… …

数据类型也可以看做是一个”类“

每一种数据类型都是一个对象,也具有其自己的属性和方法

Python中的None与 NULL(即空字符)的区别

None是Python的特殊类型,NoneType对象,它只有一个值None.

它不支持任何运算也没有任何内建方法。

None和任何其他的数据类型比较永远返回False。

None有自己的数据类型NoneType。

你可以将None复制给任何变量,但是你不能创建其他NoneType对象。

是不同的一种数据类型:

>>>type(None)
<class 'NoneType'>

表示该值是一个空对象,空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

>>>type('')
<class ''str'>

你可以将None赋值给任何变量,也可以将任何变量赋值给一个None值的对象

判断的时候 均是False

>>> ff=None
>>> if ff:
    print('ff is define')

执行结果:无打印!

属性不同

使用dir()函数返回参数的属性、方法列表。如果参数包含方法dir(),该方法将被调用。如果参数不包含dir(),该方法将最大限度地收集参数信息。

dir(None)
['__bool__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
dir('')
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

python 中is和= = 的区别

Python中的对象包含三要素:id、type、value,其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值。

is判断的是a对象是否就是b对象,是通过id来判断的;

==判断的是a对象的值是否和b对象的值相等,是通过value来判断的。

python中的not代表什么

在python中not是逻辑判断词,用于布尔型True和False,not True为False,not False为True.

pythond对变量是否为None的判断

python对变量是否为None的判断,有三种主要的写法:

第一种是if x is None;

第二种是 if not x:;

第三种是if not x is None(这句这样理解更清晰if not (x is None)) 。

在Python中 None, False, 空字符串”“, 0, 空列表[], 空字典{}, 空元组()都相当于False 。

<strong>not None == not False == not '' == not 0 == not [] == not {} == not ()</strong>  

foo is None 和 foo == None的区别

>>> class foo(object):
    def __eq__(self, other):
        return True

>>> f = foo()
>>> f == None
True
>>> f is None
False

>>> list1 = [1, 2, 3]
>>> list2 = [1, 2, 3]
>>> list1==list2
True
>>> list1 is list2
False

另外:

(ob1 is ob2) 等价于 (id(ob1) == id(ob2))

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈Python type的使用

    判断类型 在Python中我们可以使用type进行类型的判断 #我们想看一个对象的的类型可以这样 class A: pass a = A() type(a) == A #True #type(obj) 会返回创建a的类型 创建对象 #这个简单,因为type会返回对象的类型,我们可以通过返回的类型创建对象 type(a)()#如果构造函数有参数则应传递相应参数 #上述语句可以分解为 A = type(a) A() 创建类 看到创建类这个词的时候不知道type使用的朋友会问type怎么能创建类?下面

  • python 判断参数为Nonetype类型或空的实例

    Nonetype和空值是不一致的,可以理解为Nonetype为不存在这个参数,空值表示参数存在,但是值为空 判断方式如下: if hostip is None: print "no hostip,is nonetype" elif hostip: print "hostip is not null" else: print " hostip is null" 以上这篇python 判断参数为Nonetype类型或空的实例就是小编分享给大家的全部内

  • 详解Python中的type()方法的使用

    type()方法返回传递变量的类型.如果传递变量是字典那么它将返回一个字典类型. 语法 以下是type()方法的语法: type(dict) 参数 dict -- 这是字典 返回值 此方法返回传递变量的类型. 例子 下面的例子显示type()方法的使用 #!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7}; print "Variable Type : %s" % type (dict) 当我们运行上面的程序,它会产生以下结果: Var

  • python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法

    发现问题 写python的时候出现了这个错,然后网上的教程的解决方案几乎都是--"重新定义下这个变量",看的我一脸懵逼 后来发现原来是我把return None的方法赋给了变量,之后操作变量导致的,直接上代码 for i in range(2000): read_lines = random.shuffle(read_lines) # 问题出在这里了 print(read_lines) 咋一看是没啥问题,但是一运行就报错 >>TypeError: 'NoneType' ob

  • Python中的Nonetype类型怎么判断

    今天写了个爬虫,在抓取数据的时候遇到一个问题,我觉得如果不注意,这个问题很容易被忽略,所以特意在博客记录下: 问题描述: 比如,我在提取信息时,这样判断类型: type(answers[0].find_all("table")[0].string) 得到的结果为: NoneType 所以,我就想,条件过滤的时候用is not 或者 != 就可以过滤了,比如这样尝试的时候: type(answers[0].find_all("table")[0].string) is

  • 浅谈python中的数字类型与处理工具

    python中的数字类型工具 python中为更高级的工作提供很多高级数字编程支持和对象,其中数字类型的完整工具包括: 1.整数与浮点型, 2.复数, 3.固定精度十进制数, 4.有理分数, 5.集合, 6.布尔类型 7.无穷的整数精度 8.各种数字内置函数及模块. 基本数字类型 python中提供了两种基本类型:整数(正整数金额负整数)和浮点数(注:带有小数部分的数字),其中python中我们可以使用多种进制的整数.并且整数可以用有无穷精度. 整数的表现形式以十进制数字字符串写法出现,浮点数带

  • Python中的True,False条件判断实例分析

    本文实例讲述了Python中的True,False条件判断用法.分享给大家供大家参考.具体分析如下: 对于有编程经验的程序员们都知道条件语句的写法: 以C++为例: 复制代码 代码如下: if (condition)  {      doSomething();  } 对于Python中的条件判断语句的写法则是下面的样子: 复制代码 代码如下: if (condition):      doSomething() 那么对于条件语句中的condition什么时候为真什么时候为假呢? 在C++/Ja

  • 对python中if语句的真假判断实例详解

    说明 在python中,if作为条件语句,当if后面的条件参数为真时,则执行后面的语句块,反之跳过,为了深入理解if语句,我们需要知道if语句的真假判断方式. 示例 在python交互器中,经过测试发现以下条件均为假,相当于False In [2]: if '': ...: print('ok') ...: In [3]: if 0: ...: print('ok') ...: In [4]: if None: ...: print('ok') ...: In [5]: if []: ...:

  • Python中的异常类型及处理方式示例详解

    目录 前言 正文 一.什么是异常 二.异常的类型 三.异常处理 四.try 介绍 五.finally 介绍 六.raise 介绍 结尾 前言 Python 是一种面向对象的.解释型的.通用的.开源的脚本编程语言.现在市面上 Python 非常的流行,主要是因为它简单易用,学习成本低,比如要实现某个功能,Python 可能只需要几行代码,而用C语言可能需要上百行代码,因为C语言什么都要得从头开始编码,而 Python 已经内置了很多功能模块,所以,我们只需要导入特定的包,就可以实现想要的效果. 正

  • Python中的bytes类型用法及实例分享

    目录 1.bytes定义 2.bytes方法 3.使用不同方式创建bytes对象 前言; Python bytes 类型用来表示一个字节串.“字节串“不是编程术语,是我自己“捏造”的一个词,用来和字符串相呼应.bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的. 字节串(bytes)和字符串(string)的对比: 字符串由若干个字符组成,以字符为单位进行操作:字节串由若干个字节组成,以字节为单位进行操作. 字节串和字符串除了操作的数据单元不同之外,它们支持

  • 浅析python中的set类型

    目录 一. 定义 二. 创建set 1. 直接使用{}创建新的set并初始化 2. 使用set关键字来创建 3. 创建空的set 三. 基本操作 1. 重复的操作在set中自动被过滤 2. 通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果 3. 通过 remove(key) 方法可以删除元素 4. 两个set可以做数学意义上的交集.并集等操作 四. 练习 一. 定义 set是一个无序且不重复的元素集合 set和dict类似,是一组key的集合,但不存储value set

  • 详解Python中的枚举类型

    目录 什么是枚举类型 为什么要使用枚举 如何使用枚举 从字典创建枚举 最后的话 你好,我是 征哥,今天分享一下 Python 中的枚举类型,为什么需要枚举类型,及如何使用. 什么是枚举类型 枚举(Enum)是一种数据类型,是绑定到唯一值的符号表示.您可以使用它来创建用于变量和属性的常量集.它们类似于全局变量,但是,它们提供了更有用的功能,例如分组和类型安全.Python 在 3.4 版本中添加了标准库 enum. 为什么要使用枚举 使用枚举有以下好处: 代码更容易阅读,更容易维护. 减少由转换或

  • Python中内置数据类型list,tuple,dict,set的区别和用法

    Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. List 字面意思就是一个集合,在Python中List中的元素用中括号[]来表示,可以这样定义一个List: L = [12, 'China', 19.998] 可以看到并不要求元素的类型都是一样的.当然也可以定义一个空的List: L = [] Python中的List是有序的,所以要访问List的话显然

  • Python中实现参数类型检查的简单方法

    Python是一门弱类型语言,很多从C/C++转过来的朋友起初不是很适应.比如,在声明一个函数时,不能指定参数的类型.用C做类比,那就是所有参数都是void*类型!void类型强制转换在C++中被广泛地认为是个坏习惯,不到万不得已是不会使用的. Python自然没有类型强制转换一说了,因为它是动态语言.首先,所有对象都从Object继承而来,其次,它有强大的内省,如果调用某个不存在的方法会有异常抛出.大多数情况,我们都不需要做参数类型栓查,除了一些特殊情况.例如,某个函数接受一个str类型,结果

随机推荐