python常用模块&函数整理(一)

一、chardet模块:检查编码格式(

python2和python3的切换难免会碰到一些问题,有些方法比如re模块的findall()要求传入的是字符串格式的参数,urllib.request.urlope

n(url).read()返回的是bytes类型(这个是python3中才有的类型,所以很多python2中的方法都相应更改了)的,这样传参就会报以上错误。

  python3中Unicode字符串是默认格式(就是str类型),ASCII编码的字符串(就是bytes类型,bytes类型是包含字节值,其实不算是字符串)

     一劳永逸的解决方法就是根据你传进来的参数自动辨别编码格式,然后进行相应的解码:

import chardet   #需要导入这个模块,检测编码格式
encode_type = chardet.detect(html)  
html = html.decode(encode_type['encoding']) #进行相应解码,赋给原标识符(变量)
从str到bytes:调用方法encode().
编码是把Unicode字符串以各种方式编码成为机器能读懂的ASCII字符串
从bytes到str:调用方法decode().


二、Iterable模块:判断一个对象是否是Iterable对象(可迭代对象)(

      1.凡是可作用于for循环的对象都是Iterable类型(迭代对象)

           (1)一类是generator,包括生成器和带yield的generator的function均是

           (2)一类是集合数据类型:list 、tuple 、dict 、set 、 str等


      2.凡是可作用于next()函数,通过调用其不断返回下一个值的对象都是Iterator类型(迭代器):

           (1)一类generator,包括生成器和带yield的generator的function均是

           (2)一类是把list 、tuple 、dict 、set 、 str等Iterable使用iter()函数变成Iterator对象

       注:生成器

          (1)generator中保存的不是具体的元素,而是一种算法,一种无限大的数据流,通过next可以不断调用输出下面的值,直到输出StopIteration的错误

          (2)生成器的创建方法有二:1是直接在列表生成式外边将[ ]改成();2.是在函数定义中包含yield关键字

       

>>> from collections import Iterable
>>> isinstance([],Iterable)
True
>>> isinstance({},Iterable)
True
>>> isinstance((x for x in range(10)),Iterable)
True
>>> isinstance(100,Iterable)
False


三、enumerate函数:可以将一个list变成索引-元素对,从而可以在for循环中同时迭代索引和元素本身(

     

>>> for i,value in enumerate(['A','B','C']):
	print(i,value)

	
0 A
1 B
2 C

暂时更新这么多,日后有用到需更                                                        。


你可能感兴趣的:(python基础)