美文网首页Python
Python常用内建模块

Python常用内建模块

作者: 夏海峰 | 来源:发表于2020-05-07 09:33 被阅读0次

    1、datetime

    datetime是Python处理日期和时间的标准库。

    from datetime import datetime, timedelta, timezone
    
    # 获取当前日期和时间
    now = datetime.now()
    print(now) # 2020-04-29 12:36:26.656871
    print(type(now)) # <class 'datetime.datetime'>
    
    # 获取指定日期和时间
    dt = datetime(2020, 4, 15, 12, 30)
    print(dt) # 2020-04-15 12:30:00
    
    # 把日期转化成时间戳
    dts = dt.timestamp()
    print(dts) # 1586925000.0
    
    # 把时间戳转化成日期
    dt2 = datetime.fromtimestamp(dts)
    print(dt2) # 2020-04-15 12:30:00
    
    # 把时间戳转化成UTC标准时区的时间
    dt3 = datetime.utcfromtimestamp(dts)
    print(dt3) # 2020-04-15 04:30:00
    
    # str转化成日期(格式化输出)
    dt4 = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
    print(dt4) # 2015-06-01 18:19:59
    
    # 把日期转化成str(格式化输出)
    str = now.strftime('%a, %b %d %H:%M:%S')
    print(str) # Wed, Apr 29 12:49:52
    
    # 日期加减,推算前几天、后几天的时刻
    print(dt) # 2020-04-15 12:30:00
    dt5 = dt + timedelta(hours=10)
    print(dt5) # 2020-04-15 22:30:00
    dt6 = dt - timedelta(days=1)
    print(dt6) # 2020-04-14 12:30:00
    dt7 = dt + timedelta(days=2,hours=10)
    print(dt7) # 2020-04-17 22:30:00
    

    2、collections

    collections是Python内建的一个集合模块,提供了许多有用的集合类。

    namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。

    from collections import namedtuple
    
    Circle = namedtuple('Circle', ['x','y','r'])
    
    c = Circle(1,1,5)
    
    print(c.x) # 1
    print(c.y) # 1
    print(c.r) # 5
    

    使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈。

    from collections import deque
    
    q = deque([1,2,3,4,5])
    q.append(6)
    q.appendleft(7)
    print(q) # deque([7, 1, 2, 3, 4, 5, 6])
    q.pop()
    q.popleft()
    print(q) # deque([1, 2, 3, 4, 5])
    

    Counter是一个简单的计数器,可以统计字符串中字符出现的个数。

    from collections import Counter
    
    c = Counter()
    for ch in 'programming':
        c[ch] = c[ch]+1
    
    print(c)
    # Counter({'r': 2, 'g': 2, 'm': 2, 'p': 1, 'o': 1, 'a': 1, 'i': 1, 'n': 1})
    print(c['m']) # 2
    print(c['r']) # 2
    

    3、Base64

    Base64是一种用64个字符来表示任意二进制数据的方法,常用于在URL、Cookie、网页中传输少量二进制数据。

    import base64
    
    data = base64.b64encode(b'binary\x00string')
    print(data) # b'YmluYXJ5AHN0cmluZw=='
    

    4、struct

    struct模块可用于bytes字节数据和其他二进制数据类型的转换。

    import struct
    
    data = struct.pack('>I', 10240099)
    print(data) # b'\x00\x9c@c'
    

    5、hashlib

    hashlib提供了常见的摘要算法,如MD5,SHA1等。什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

    MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。

    import hashlib
    
    md5 = hashlib.md5()
    md5.update('hello world'.encode('utf-8'))
    print(md5.hexdigest())
    # 5eb63bbbe01eeed093cb22bb8f5acdc3
    

    6、itertools

    内建模块itertools提供了非常有用的用于操作迭代对象的函数,它们的返回值不是list,而是Iterator,只有用for循环迭代的时候才真正计算。

    import itertools
    
    # 从1开始,打印到100
    natuals = itertools.count(1)
    for n in natuals:
        print(n)
        if n >= 100:
            break
    

    7、urllib

    urllib 提供的功能就是利用程序去执行各种HTTP请求,提供了一系列用于操作URL的功能。

    from urllib import request
    
    # 发起 GET 请求
    with request.urlopen('https://cnodejs.org/api/v1/topics') as f:
        data = f.read()
        print(f.status) # 200
        print(data) # 打印出响应数据
    

    8、HTMLParser

    如果我们要编写一个搜索引擎,第一步是用爬虫把目标网站的页面抓下来,第二步就是解析该HTML页面,看看里面的内容到底是新闻、图片还是视频。Python提供了HTMLParser来非常方便地解析HTML,可以把网页中的文本、图像等解析出来。

    from html.parser import HTMLParser
    from html.entities import name2codepoint
    
    class MyHTMLParser(HTMLParser):
    
        def handle_starttag(self, tag, attrs):
            print('<%s>' % tag)
    
        def handle_endtag(self, tag):
            print('</%s>' % tag)
    
        def handle_startendtag(self, tag, attrs):
            print('<%s/>' % tag)
    
        def handle_data(self, data):
            print(data)
    
        def handle_comment(self, data):
            print('<!--', data, '-->')
    
        def handle_entityref(self, name):
            print('&%s;' % name)
    
        def handle_charref(self, name):
            print('&#%s;' % name)
    
    parser = MyHTMLParser()
    parser.feed('''<html>
        <head></head>
        <body>
            <p>Some <a href=\"#\">html</a> HTML&nbsp;tutorial...<br>END</p>
        </body></html>''')
    

    参考资源:

    1、廖雪峰Python教程
    2、Python官方文档

    相关文章

      网友评论

        本文标题:Python常用内建模块

        本文链接:https://www.haomeiwen.com/subject/fbkoghtx.html