美文网首页
Phthon标准库

Phthon标准库

作者: angeliur | 来源:发表于2019-08-11 17:45 被阅读0次
python标准库是日常应用比较广泛的模块,包括:
  1. 文字处理的 re
  2. 日期类型的time、datetime
  3. 数字和数学类型的math、random
  4. 文件和目录访问的pathlib、os.path
  5. 数据压缩和归档的tarfile
  6. 通用操作系统的os、logging、argparse
  7. 多线程的 threading、queue
  8. Internet数据处理的 base64 、json、urllib
  9. 结构化标记处理工具的 html、xml
  10. 开发工具的unitest
  11. 调试工具的 timeit
  12. 软件包发布的venv
  13. 运行服务的main
正则表达库re
  • 各种正则表达式的含义如下:

    .     表示可以匹配除\n 以外任何单个字符,多个.表示匹配多个字符。如:re.compile('...').match('amdsdgg') 表示匹配前三个字符'amd'
    ^     表示以什么内容开头
    $     表示以什么内容结尾
    *     表示匹配前面的字符出现0次到多次,如re.compile('ca*t').match('ct')和re.compile('ca+t').match('caaaat')都可以匹配
    +     表示匹配前面的字符出现1次到多次,如re.compile('ca+t').match('ct')这样就不会匹配,因为'ct'中没有出现'a'
    ?     表示匹配前面的字符出现0次或1次,,如re.compile('ca+t').match('ct')和re.compile('ca+t').match('cat')都可以匹配,而re.compile('ca+t').match('caaaat')这样就不会匹配
    {m}   表示匹配前面的字符出现m次
    {m,n} 表示匹配前面的字符出现m到n次
    []    表示匹配[]里面出现的任意字符,如'c[bcd]t'就可以匹配cbt 、 cct 以及cdt
    |     通常结合分组匹配符 () 来一起使用
    \d    表示匹配0到9的单个数字,相当于使用[0-9]来匹配;如果要表示匹配0到9的数字多次,就用 \d+ 来表示,相当于使用[0-9]+;\d{5} 匹配指定个数(5个)的数字
    \D    表示匹配不包括数字的内容
    \s    表示匹配任意空白符   \S表示匹配非空白  空白指空格、制表符\t 换行符\n 等
    ()    用来进行分组,如'(\d+)-(\d+)-(\d+)'可以匹配日期'2018-05-10'
    ^$    表示匹配空行,比如匹配一段文本时,其中有一行是空的,什么都不包括,通过^$就可以看匹配空行
    .*?   表示不使用贪婪模式,贪婪模式就是*匹配的时候会尽可能多的匹配,*加上?后表示只匹配第一个匹配上的内容
    
  • 实例代码

    import re
    # print(re.compile('.').match('q'))
    # print(re.compile('...').match('sddamgdd'))
    # print(re.compile('ca*t').match('caaat'))
    # print(re.compile('ca+t').match('ct'))
    # print(re.compile('ca?t').match('ct'))
    # print(re.compile('ca?t').match('caat'))
    # print(re.compile('ca{4}t').match('caaaat'))
    # print(re.compile('ca{4,7}t').match('caaaaaat'))
    # print(re.compile('c[bcd]t').match('cat'))
    # print(re.compile('c[bcd]t').match('cdt'))
    # print(re.compile('c\dt').match('c2t'))
    # print(re.compile('c\d+t').match('c15439964t'))
    # print(re.compile('c\Dt').match('cht'))
    # print(re.compile('c\Dt').match('c5t'))
    # print(re.compile('c\st').match('c t'))
    # print(re.compile('c\st').match('c      t'))
    
    
    #贪婪模式
    print(re.compile('hello*').match('hellooooooo omg'))
    #非贪婪模式
    print(re.compile('hello*?').match('hellooooooo omg'))
    
    
    #使用正则对日期进行分组
    # r'(\d+)-(\d+)-(\d+)' 正则字符串前面加r  表示不对字符串里的内容进行转义
    p = re.compile(r'(\d+)-(\d+)-(\d+)')
    # print(p.match('aa2018-05-10bb').group(2))    无法匹配,因为2018前面出现了字母aa
    print(p.match('2018-05-10bb').group())  #group()表示分组后的所有内容,group(1)表示分组后的第一个内容
    # print(p.match('2018-05-10').groups())
    
    
    # year, month, day = p.match('2018-05-10').groups()
    # print(year)
    
    # match是来进行完全匹配的,所以对于'aa2018-05-10bb'无法匹配'(\d+)-(\d+)-(\d+)';而search是进行搜索匹配,如果第一个字符不匹配,会向后继续查找看是否有可以匹配的内容
    print (p.search('aa2018-05-10bb'))
    
    #sub()方法可以进行替换,第一个参数是整个内容中需要被替换的部分,第二个参数是替换成的内容,第三个参数是整个内容
    phone = '123-456-789 # 这是电话号码'
    p2 = re.sub(r'#.*$','',phone)  # 将'# 这是电话号码'替换成''
    print(p2)
    p3 = re.sub(r'\D','',p2)    # 将字符串中所有不是数字的内容替换成''
    print(p3)
    # findall()  可以匹配多次的方法
    
日期与时间函数库
import time
print(time.time())
print(time.localtime())
print(time.strftime('%Y-%m-%d %H:%M:%S'))  # 以指定的格式获取当前时间

import datetime
print(datetime.datetime.now())  #获取当前时间

newtime = datetime.timedelta(minutes=10)    #10分钟以后
print(datetime.datetime.now() + newtime)    #获取当前时间的10分钟以后

one_day = datetime.datetime(2008,1,25)  #获取指定时间
newday = datetime.timedelta(days=15)
print(one_day + newday) #获取指定时间的15天以后
数学相关库
import random
# 产生从1到5的随机int数
print(random.randint(1,5))
# 从['abc','edg','mnq']中随机选出一个
print(random.choice(['abc','edg','mnq']))
文件与目录操作库
import os
print(os.path.abspath('.'))
print(os.path.abspath('..'))
print(os.path.exists('E:\geektime_python'))
print(os.path.isdir('E:\geektime_python'))
print(os.path.isfile('E:\geektime_python'))
# os.path.join('tem/a/','b/c')

from pathlib import Path

# Path('.')相当于os.path.abspath('.')
p = Path('.')
print(p.resolve())
print(p.is_dir())

# 通过Path.mkdir()创建指定目录,参数parents=True表示如果指定的某一个目录不存在父目录也可以创建成功,
# 比如创建'stydy/a/b'目录之前,只有a是有父目录study的,而b则没有父目录。如果parents=False会报错
q = Path('E:\\geektime_python\\stydy\\a\\b')
Path.mkdir(q,parents=True)

相关文章

  • Phthon标准库

    python标准库是日常应用比较广泛的模块,包括: 文字处理的 re 日期类型的time、datetime 数字和...

  • python关键词及内置函数列表

    python关键词 phthon内置函数

  • RobotFramework测试库

    一、标准库 一些测试库与Robot Framework一起分发,这些库称为标准库。这些是可用的标准库: Built...

  • Boolan C++标准库 第一周

    C++标准库 第一讲 一、认识headers、版本 1.C++标准库 vs STL C++标准库大于STL(标准...

  • 标准库

    标准库 Python标准库中包含了大量有用的模块,同时也是每个标准的Python安装包中的一部分。熟悉Python...

  • 标准库

    Object 对象 1. Object静态方法 (1) 对象属性模型的相关方法Object.keys() : 获取...

  • 标准库

    C语言的标准库总共分成十五个部分,每个部分用一个头描述。许多编译器都会使用扩展后的库,因此,包含的头通常会多于十五...

  • 标准库

    assert.h 断言

  • 标准库

    数据类型 datetime: 基本日期和时间类型calendar: 与日历相关的一般功能collections: ...

  • 标准库

    包装类 如果尝试着把原始类型(number、string、boolean)当做对象使用,JS会自动将其转换为对应包...

网友评论

      本文标题:Phthon标准库

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