天天看點

json子產品、re子產品

  

json子產品

  json全稱是(javascript object notation)是一種輕量級的資料格式,一般用于前背景,資料的互動。

  import  json

  print(json.__all__)     輸出json的方法;常用的方法:dumps、loads、dump、load

  序列化: 把一個python對象轉化成json字元串;

  反序列化: 把json字元串轉化成python

  dumps :indent實作縮進, sort_keys 實作排序

  下面簡述json四種方法的案例:

  先在python中建立一個字典:

  user = {

   'name':'dc',

   'age':18,

      'kl':3.6,

      'tuple':('python','java'),

      'li': [1,2,3],

      'kong':none,

    'true':true

  }

dumps()方法:傳回一個str,内容就是标準的json。

  a = json.dumps(user)   print(a)   print(type(a))    print(user)

  輸出:

json子產品、re子產品

loads方法:反序列化:

  b = json.loads(a)  将json資料轉化為python的資料類型字典;

  列印:print(type(b))   print(b)   print(type(b['kl']))

json子產品、re子產品

dump方法:針對檔案

   with open ('test.json','w+') as f:

    json.dump(user, f, indent = 2, sort_keys = true, ensure_ascii=false)

   運作之後會自動在目前檔案夾下生成一個test.json的檔案用于存儲json資料!

  indent表示縮進,sorts_keys表示排序

load方法:針對檔案,将json資料檔案轉化為python資料

   with open('test.json','r+', encoding="utf-8") as f:

    data = json.load(f)   #反序列化

   運作之後會打開檔案test.json将json資料反序列化,輸出data: print(data):

   

json子產品、re子產品

 re子產品

   正規表達式是計算機科學的一個概念,正則表通常被用來檢索、替換那些符合某個模式(規則)的文本。也就是說使用正規表達式

可以在字元串中比對出你需要的字元或者字元串,甚至可以替換你不需要的字元或者字元串。

元字元:類似于python中的關鍵字

  .   ^   $   *   +   ?   {}  []   \   |   ()

 符合說明:

  .      點符号可以比對除換行符之外所有的字元;換行符:‘\n’;

  \d      反斜杠加d可以比對數字;後邊加數字{3}可以指定3個數字一起比對;

  \s      比對空白符的;包括空格,制表符(tab),換行符等;

  \w      比對字母或數字或下劃線或漢字等;

  \b        表示單詞的邊界; b = re.findall(r'read\b','read app')#加r是取消字元串的轉義

     \.         比對點号本身,取消字元串的轉義用r,取消正則的轉義用  \ 來取消

     \d                  比對數字以外的;

     \d、\s、\w、\b    是與小寫的相反的作用

  ^                    比對開頭的;

  $        比對結尾的;

  {}       指定比對數字;{2}指定兩個兩個數字進行比對;{2,5}比對2到5個數字,先滿足5,沒有就看有沒有4個...

          {,5}比對5個數字以下,遇到不是數字就相當于遇到0個數字;

         

json子產品、re子產品

  *                      比對前面的子表達式零次或多次,等價于{0,},如 '\d*'可以比對任意個數字

          '.*'可以比對任意多個非換行符,如果不加*,則會輸出為一個一個的,有則滿足最大的(貪婪模式)

  +                     比對前面的子表達式一次或多次,等價于{1,} ,如'\d+'比對任意個數字,0個除外!

  ?                     比對前面的子表達式零次或一次,等價于{0,1}

#貪婪模式 滿足要求,選最大的

  tan = re.findall('a.*t','amount at about')

  這裡會把整個字元串都比對到

#懶惰模式 滿足要求就結束

  lan = re.findall('a.*?t','amount at about')

  這裡隻會比對到amount;

子組比對:

  [ ]                  字元類,将要比對的一類字元集放在[]裡面

  如:

  [ . ? * ( ) {} ]      # 比對裡面的這些符号

  [0-9]         # 比對0到9的數字相當于\d

  [^\d]          # 比對除數字以外的字元,相當于\d

  [a-z]          # 比對所有的小寫字母

  [^a-z]           # 比對非小寫字母     ^相對于取反

  |             # 相當于或(or)分支條件;a | b # 比對字母a或者b 與[ab]是一樣的

分組:将要比對的一類字元集放在()組成一個小組

json子產品、re子產品
json子產品、re子產品

    re子產品常用方法

    search() # 在一個字元串中搜尋比對正規表達式的第一個位置,傳回match對象

    

json子產品、re子產品

    輸出:span=(0,2)表示在0,1号索引位置,match為比對的内容

json子產品、re子產品

    finditer() # 搜尋字元串,傳回一個比對結果的疊代類型,每個疊代元素是match對象

  #擷取 match對象 中的資訊

    group() # 傳回比對到的字元串

    star() # 傳回比對的開始位置

    end() # 傳回比對的結束位置

    span() # 傳回一個元組表示比對位置(開始,結束)

json子產品、re子產品
json子產品、re子產品

  findall() # 搜尋字元串,以清單類型傳回全部能比對的子串

  sub() # 替換 類似于字元串中 replace() 方法  

  compile() # 編譯正規表達式為模式對象

  re.split() # 将一個字元串按照正規表達式比對結果進行分割,傳回清單類型

json子產品、re子產品

  輸出結果:

json子產品、re子產品

繼續閱讀