python基础篇之实用库

本文介绍了Python中正则表达式的使用,包括match和findall方法,并展示了基本模式和重复模式的应用。此外,还讲解了文件模块中的常见操作,如读取文件、获取文件列表等。同时,提到了命令行模块如何执行系统命令,以及异常处理的基本方法。最后,简单提及了网络模块的urllib库用于下载和获取网络资源的功能。通过实例代码,帮助读者更好地理解和应用这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python 的实用离不开其强大的库或框架的支持,像正则表达式,文件模块,命令行模块, Django 框架, sk-learning 工具箱等.这些都让 Python 能够非常方便的处理不同领域的问题。

正则表达式

初学 Python,对 Python 的文字处理能力有很深的印象,除了 str 对象自带的一些方法外,就是正则表达式这个强大的模块了。关于 Python 里面正则表达式的使用网上有很多博文,如 Python正则式学习笔记等,这里做一下自己的总结.

基本使用

  • match 方法

    import re
    
    str = 'an example word:cat!!'
    match = re.search(r'word:\w\w\w', str)
    
    # If语句紧跟来检验search()是否成功
    if match:                      
          print 'found', match.group()  ## 找到cat
    else:
          print 'did not find'
    
  • findall 方法

    import re
    
    # 在字符串中查找
    str = 'purple alice@google.com, blah monkey bob@abc.com blah dishwasher'
    
    # 找出str中所有的正规的邮箱
    emails = re.findall(r'[\w\.-]+@[\w\.-]+', str) ## ['alice@google.com', 'bob@abc.com']
    for email in emails:
        print email
    
    # 在文件中查找
    f = open'test.txt','r')
    strings = re.findall(r'pattern',f.read())
    

基本模式

  • 普通字符 a-z,A-Z,0-9
  • . 匹配任何一个单字符,除了换行符\n
  • \w 匹配字母/数字/下划线,等价于 [a-zA-Z0-9] ,\W\w互为补集
  • \b 匹配词和非词的分隔界限
  • \s 匹配单个空格字符,等价于 [ \n\r\t\f\v]. \S\s 互为补集
  • \t\n\r 匹配制表符,换行符,回车符
  • \d 匹配数字,等价于 [0-9]
  • ^ $ ^ 匹配开头, $ 匹配结尾

重复模式

  • + 匹配至少有一个和左边相同的字符构成的串.eg i+ 匹配 i/ii/iii 等

  • * 匹配 0 个或多个和左边相同的字符构成的串.eg i* 匹配 /i/ii/iii 等

  • ? 匹配 0 个或一个和左边相同的字符.eg i?匹配 /i

    注意:
    +*都是尽可能多的匹配字符串

特殊符号

  • [] 代表单个字符,这个字符是属于[]中的元素
  • () () 中匹配的字符串构成的一个 group,可以通过 match.group(i) 提取第 i 个组合

课后习题

文件模块

  • 模块支持

    import os
    import shutil
    
  • 常用函数

    # 获取文件列表
    filenames = os.listdir(dir)
    
    # 拼接文件路径
    os.path.join(dir,filename)
    
    # 获取绝对路径
    os.path.abspath(path)
    
    # 从完整路径中获取目录和文件名
    os.path.dirname(path)
    os.path.basename(path)
    
    # 判断完整路径是否存在
    os.path.exists(path)
    
    # 创建目录
    os.mkdir(dir_path)
    # 创建路径上的所有文件夹
    os.makedirs(dir_path)   
    
    # 拷贝文件
    shutil.copy(src,dest)
    

命令行模块

  • 模块支持

    import commands
    
  • 常用函数

    # 运行命令,等待结束。返回状态(正常返回是0)和结果。
    (status, output) = commands.getstatusoutput(cmd)
    
    # 不返回状态的执行命令
    output = commands.getoutput(cmd)
    
    # 不关心结果,只要执行即可
    os.system(cmd)
    
  • 样例代码

    # 给定一个dir路径,运行 'ls -l'
    def listdir(dir):
        cmd = 'ls -l ' + dir
        print "Command to run:", cmd   ## 易于调试
        (status, output) = commands.getstatusoutput(cmd)
        if status:    ## 错误情况,打印错误信息并退出
            sys.stderr.write(output)
            sys.exit(1)
        print output  ## 否则显示输出结果
    

异常处理

  • 样例代码

    try:
        # 打开文件或读取文件出现问题将抛出 IOError 异常.
        f = open(filename, 'rU')
            text = f.read()
            f.close()
    except IOError:
        # 处理 IOError 异常.
        sys.stderr.write('problem reading:' + filename)
    # try/except后面的代码将继续执行
    

网络模块

  • 模块支持

    import urllib
    
  • 常用函数

    # 返回一个文件
    ufile = urllib.urlopen(url)
    
    # 读取文件信息
    text = ufile.read()
    
    # 获取网络文件meta/type 信息
    info = ufile.info()
    type = info.gettype()
    
    # 获取最初始的url(针对重定向)
    baseurl = ufile.geturl()
    
    # 下载url数据到指定的文件
    urllib.urlretrieve(url,filename)
    
    # 获取完整url
    urlparse.urljoin(baseurl,url)
    
  • 样例代码

    ## 用try/except处理网络异常
    def wget(url):
        try:
            ufile = urllib.urlopen(url)
            if ufile.info().gettype() == 'text/html':
                print ufile.read()
        except IOError:
            print 'problem reading url:', url
    
    wget('http://www.baidu.com')  # 一定要加http://
    

课后练习


如果该文章对您产生了帮助,或者您对技术文章感兴趣,可以关注微信公众号: 技术茶话会, 能够第一时间收到相关的技术文章,谢谢!

技术茶话会

本篇文章由一文多发平台ArtiPub自动发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值