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')
getattribute方法返回类型执⾏结果:⽆打印!
属性不同
使⽤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__', '__subcl dir('')
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new_ 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))
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论