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)
輸出:
loads方法:反序列化:
b = json.loads(a) 将json資料轉化為python的資料類型字典;
列印:print(type(b)) print(b) print(type(b['kl']))
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):
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個數字;
* 比對前面的子表達式零次或多次,等價于{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]是一樣的
分組:将要比對的一類字元集放在()組成一個小組
re子產品常用方法
search() # 在一個字元串中搜尋比對正規表達式的第一個位置,傳回match對象
輸出:span=(0,2)表示在0,1号索引位置,match為比對的内容
finditer() # 搜尋字元串,傳回一個比對結果的疊代類型,每個疊代元素是match對象
#擷取 match對象 中的資訊
group() # 傳回比對到的字元串
star() # 傳回比對的開始位置
end() # 傳回比對的結束位置
span() # 傳回一個元組表示比對位置(開始,結束)
findall() # 搜尋字元串,以清單類型傳回全部能比對的子串
sub() # 替換 類似于字元串中 replace() 方法
compile() # 編譯正規表達式為模式對象
re.split() # 将一個字元串按照正規表達式比對結果進行分割,傳回清單類型
輸出結果: