Python中的Nonetype类型怎么判断

作者:Soyoger 时间:2021-06-19 17:33:13 

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

问题描述:

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


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))

来源:https://soyoger.blog.csdn.net/article/details/81185217

标签:Python,Nonetype,判断
0
投稿

猜你喜欢

  • golang程序进度条实现示例详解

    2024-04-25 13:22:45
  • Tensorflow--取tensorf指定列的操作方式

    2021-06-25 21:21:02
  • oracle数据库ORA-01196错误解决办法分享

    2024-01-15 10:07:10
  • Pycharm+Scrapy安装并且初始化项目的方法

    2023-03-05 11:49:00
  • SQL Server"错误 21002: [SQL-DMO]用户 * 已经存在问题解决

    2024-01-16 16:01:55
  • 那些被我遗忘掉的XHTML标签们

    2008-06-07 14:27:00
  • javascript使用Blob对象实现的下载文件操作示例

    2024-04-29 13:14:52
  • EF(EntityFramework) 插入或更新数据报错的解决方法

    2024-01-20 19:21:42
  • pytest用yaml文件编写测试用例流程详解

    2022-04-19 03:55:29
  • python判断列表的连续数字范围并分块的方法

    2021-01-18 12:04:19
  • Numpy对于NaN值的判断方法

    2022-12-15 15:08:21
  • python yield关键词案例测试

    2021-02-07 03:14:07
  • python判断自身是否正在运行的方法

    2022-07-30 02:34:44
  • ASP XML编程objXML.async = False

    2011-04-21 10:55:00
  • MySQL分区表的正确使用方法

    2024-01-29 01:51:26
  • Python任务自动化工具tox使用教程

    2022-08-28 12:33:58
  • 从Pytorch模型pth文件中读取参数成numpy矩阵的操作

    2021-12-27 11:05:53
  • 改进SQL Server数据库系统安全五步走

    2009-01-20 11:47:00
  • python使用ProjectQ生成量子算法指令集

    2023-03-17 20:26:51
  • Oracle 创建用户及数据表的方法

    2009-09-26 18:25:00
  • asp之家 网络编程 m.aspxhome.com