第五章 模塊之 struct、dis、正則表達式、異常處理

5.15 struct模塊

  1. pack 可以把全部的數字都固定的轉換成4字節git

5.16 dis

  1. dis.dis 查看計算機指令正則表達式

5.16 正則表達式

  1. 基礎app

    1. 正則表達式概念: 是一種規則(元字符,量詞)ide

      正則表達式是對字符串操做的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個「規則字符串」,這個「規則字符串」用來表達對字符串的一種過濾邏輯。函數

    2. re 模塊和正則表達式的關係ui

    re 模塊自己只是用來操做正則表達式,和正則表達式一點關係都沒有google

    1. 應用;url

    匹配字符串 spa

    表單驗證code

    爬蟲

  2. [ ] 字符組

    • 自己是哪個字符,就匹配字符串中哪個字符

    • 字符組[字符1字符2],一個字符組就表明匹配一個字符,只要這個字符出如今字符串中,那麼久說明這個字符能匹配上

    • 字符中還可使用範圍

    • 全部的範圍都必須遵循ascii碼從小到大來指定

  3. 元字符

    1. \ 轉義符 能夠轉義全部

      \ d (digit) 能匹配全部0-9之間的數字

      \w (word) 能匹配大小寫字母,數字,下劃線

      \s (space) 能匹配 空白 空格 換行符 製表符

      \ t (table) 只能匹配製表符

      \ n (next) 只能匹配換行符

     

    1. \D 表示除 數字全部

      \W 表示除 大小寫字母,數字,下劃線 的全部

      \S 表示除 空白 空格 換行符 製表符 的全部

     

    1. [\d\D] [\w\W] [\s\S] 能表示一切字符

      . 表示除換行符以外的任意內容

     

    1. [ ] 字符組只要在中括號內的全部字符都符合規則的字符

      [ ^ ] 字符組只要在中括號內的全部字符都不符合規則的字符

       

    2. ^ 表示一個字符,只匹配一個開頭

      $ 表示一個字符的結束

      ^abc$ 表示約束以a開頭,c結尾

    3. | 或 表示兩個規則喲重疊的部分,老是長的在前面,短的在後面

      () 分組 表示給一部分正則規定爲一組,| 這個符號的做用域就能夠縮小了

  4. 量詞

    1. { n } 表示只能出現n次

      { n, } 表示至少出現n次

      { n,m } 表示至少出現n次,至多出現m次

    2. ? 表示匹配0次或者1次,無關緊要可是又只能有1個

      + 表示匹配一次或者屢次

      * 表示匹配0次或者屢次,無關緊要可是有能夠有多個

  5. 默認貪婪匹配:老是會在符合量詞條件的範圍爲儘可能多的匹配

    非貪婪匹配(惰性匹配):老是會匹配符合條件範圍內儘可能小的字符串

    元字符 量詞 ?x 表示元字符規則在量詞範圍內匹配,一遇到x就會中止

    . * ? x 表示匹配任意的內容屢次遇到X就會當即中止

    1. 元字符

    2. 元字符量詞

    3. 元字符量詞?

    4. \d+?x .*?x 爬蟲

 

5.17 異常處理

  1. 基本格式

    try:
       pass
    except Exception as e:
       pass

     

    • 練習

      try:
         v = []
         v[11111] # IndexError
      except ValueError as e:
         pass
      except IndexError as e:
         pass
      except Exception as e:
         print(e) # e是Exception類的對象,中有一個錯誤信息。
      finally:
         print('最後不管對錯都會執行')
      # 練習一
      import requests
      ​
      try:
          ret = requests.get('http://www.google.com')
          print(ret.text)
      except Exception as e:
          print('請求異常')
          
      # 練習二
      def func(a):
          try:
              return a.strip()
          except Exception as e:
              pass
          return False
      ​
      v = func('alex')
      if not v:
          print('函數執行失敗')
      else:
          print('結果是',v)
      View Code

       

    • 練習題

      # 1. 寫函數,函數接受一個列表,請將列表中的元素每一個都 +100
      def func(arg):
          result = []
          for item in arg:
              if item.isdecimal():
                  result.append(int(item) + 100)
          return result 
      ​
      # 2. 寫函數去,接受一個列表。列表中都是url,請訪問每一個地址並獲取結果。
      import requests 
      def func(url_list):
          result = []
          try:
              for url in url_list:
                  response = requests.get(url)
                  result.append(response.text)
          except Exception as e:
              pass
          return result 
      ​
      def func2(url_list):
          result = []
          for url in url_list:
              try:
                  response = requests.get(url)
                  result.append(response.text)
              except Exception as e:
                  pass
          return result 
      ​
      func(['http://www.baidu.com','http://www.google.com','http://www.bing.com'])
      View Code

       

  1. 主動觸發異常

    try:
       int('123')
       raise Exception('阿薩大大是阿斯蒂') # 代碼中主動拋出異常
    except Exception as e:
       print(e)
       
       
    # 實例
    def func():
       result = True
       try:
           with open('x.log',mode='r',encoding='utf-8') as f:
               data = f.read()
           if 'alex' not in data:
               raise Exception()
       except Exception as e:
           result = False
       return result
  2. 自定義異常

    # 實例一
    class MyException(Exception):
       pass

    try:
       raise MyException('asdf')
    except MyException as e:
       print(e)
       
    # 實例二
    class MyException(Exception):
       def __init__(self,message):
           super().__init__()
           self.message = message

    try:
       raise MyException('asdf')
    except MyException as e:
       print(e.message)

    總結

    函數高級 5*

    • 嵌套

    • 裝飾器

    模塊分類和定義 4*

    • 內置模塊

      • os

      • sys

      • ...

    • 第三方

      • requests

      • xlrd

    • 自定義模塊

      • 文件

      • 文件夾 + init.py【包】

    導入模塊

    • sys.path

    • 導入

      • import

      • from xx.xxx import xx

相關文章
相關標籤/搜索