日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

(1) 正則表達式

【是什么】:特殊的序列。檢測字符串是否與序列匹配。

【有什么作用】:實現快速檢索文本,或實現替換文本的操作。

 

實戰:查看字符串是否包含Python/ target=_blank class=infotextkey>Python

  • findal查找全部
  • re.findall(需要匹配的內容, 查找的字符串)
a = "C|JAVA|C#|python|php|JS"
# 方法一
print(a.index("python"))
# 方法二
import re
r = re.findall("python", a)
if len(r) != 0:
    print("字符串中包含python")

輸出:
10
字符串中包含python

 

(2) 元字符與普通字符

實戰:在字符串中把所有的數字提取出來

  • ‘python’ 是普通字符
  • ‘d’ 是元字符,表示數字:0-9 ,代表一定的意義
  • 'D' 表示‘d’的相反,不是0-9
a = "C123Java321C#455python1321PHP1243JS"

import re
r = re.findall("d", a)
print(r)

r = re.findall("D", a)
print(r)

輸出:
['1', '2', '3', '3', '2', '1', '4', '5', '5', '1', '3', '2', '1', '1', '2', '4', '3']
['C', 'J', 'a', 'v', 'a', 'C', '#', 'p', 'y', 't', 'h', 'o', 'n', 'P', 'H', 'P', 'J', 'S']

 

(3) 字符集

實戰:查找中間單詞是 c,或者 f 的字符集

  • [] 可以抽象字符集,可以抽象c或者f,借助普通字符a和c來進行定界
  • ^ 表示否的意思
              •  - 表示順序,匹配 a 到 f 的字符
import re
a = "abc,acc,afc,adc,arc"
r1 = re.findall("a[cf]c", a)
r2 = re.findall("a[^cf]c", a)
r3 = re.findall("a[c-f]c", a)
print(r1)
print(r2)
print(r3)

輸出:
['acc', 'afc']
['abc', 'adc', 'arc']
['acc', 'afc', 'adc']

 

 (4) 元字符還有什么

w : 表示字母 a-z、A-Z 和數字0-9 和 _

import re
a = "a bc!acc$afc@adc!arc_"
r1 = re.findall("w", a)
r2 = re.findall("W", a)
print(r1)
print(r2)

輸出:
['a', 'b', 'c', 'a', 'c', 'c', 'a', 'f', 'c', 'a', 'd', 'c', 'a', 'r', 'c', '_']
[' ', '!', '$', '@', '!']

s : 表示空白字符

import re
a = "a bc!acc$afc@adc!arc_"
r1 = re.findall("s", a)
r2 = re.findall("S", a)
print(r1)
print(r2)

輸出:
[' ']
['a', 'b', 'c', '!', 'a', 'c', 'c', '$', 'a', 'f', 'c', '@', 'a', 'd', 'c', '!', 'a', 'r', 'c', '_']

. :表示除換行符之外的所有字符

 

(5) 數量詞

實戰:把python匹配出來

  • 表示重復的字符集,可以用數字表示
  • {} 里面寫的數字,表示重復幾次
import re
a = "c123java321C#455python1321php1243JS"
r1 = re.findall("[a-z][a-z][a-z][a-z][a-z][a-z]", a)
r2 = re.findall("[a-z]{6}", a)
print(r1)
print(r2)

輸出:
['python']
['python']

 

實戰:把 python,java,php 匹配出來

  • {} 里面寫的數字,可以寫有多少到多少的數字
import re
a = "c123java321C#455python1321php1243JS"
r1 = re.findall("[a-z]{3,6}", a)
print(r1)

輸出:
['java', 'python', 'php']

 

(6) 貪婪與非貪婪

默認情況,python是貪婪模式,匹配最多的合適的數量。

? :在數字范圍后表示非貪婪

實戰: 獲取3個字母

import re
a = "c123java321C#455python1321php1243JS"
r1 = re.findall("[a-z]{3,6}?", a)
r2 = re.findall("[a-z]{3}", a)
print(r1)
print(r2)

輸出:
['jav', 'pyt', 'hon', 'php']
['jav', 'pyt', 'hon', 'php']

 

(7) 匹配0次1次或者無限多次

*表示匹配前面的字符0次或者多次

+表示匹配前面的字符1次或者多次

?表示匹配前面的字符0次或者1次,可以做去除的操作

import re
a = "pytho0python1pythonn2pythonnn333"
r1 = re.findall("python*", a)
r2 = re.findall("python+", a)
r3 = re.findall("python?", a)
r4 = re.findall("python{1,3}?", a) # 表示非貪婪模式
print(r1)
print(r2)
print(r3)
print(r4)
輸出:
['pytho', 'python', 'pythonn', 'pythonnn']
['python', 'pythonn', 'pythonnn']
['pytho', 'python', 'python', 'python']
['python', 'python', 'python']

 

(8) 邊界匹配符

實戰: 驗證位數是否符合

  • ^ 表示從字符串前面開始匹配
  • $ 表示從字符串后面開始匹配
import re
a = "100086"
r1 = re.findall("d{3,5}", a)
r2 = re.findall("^d{3,5}$", a)
print(r1)
print(r2)

輸出:
['10008']
[]
import re
a = "100086"
r1 = re.findall("086$", a)
r2 = re.findall("^1000", a)
r3 = re.findall("000$", a)
r4 = re.findall("^000", a)
print(r1)
print(r2)
print(r3)
print(r4)

輸出:
['086']
['1000']
[]
[]

 

 (9) 組

判斷字符串中是否包含 2個python

  • python{3} : 表示單個n重復3次
  • () :表示組,可以有多個組
  • (python){3}表示一組的單詞,重復3次
  • [] 是或者的關系,()是且的關系
import re
a = "pythonpython2pythonpython2nvvpythonpythonn"
r1 = re.findall("(python){2}", a)
r2 =  re.findall("(python){2}(2)", a)
print(r1)
print(r2)

輸出:
['python', 'python', 'python']
[('python', '2'), ('python', '2')]

 

(10) 匹配模式參數

flags=re.I : 表示不區分大小寫

| : 連接多個模式,且

import re
a = "pc#ythonpython2pythonpython2nvvpythonpythonn"
r1 = re.findall("C#", a,flags=re.I) 
print(r1)

輸出:
['c#']

 

 

re.S : 表示 .匹配所有字符,包括換行符

import re
a = "pc#nythonpython2pythonpython2nvvpythonpythonn"
r1 = re.findall("C#.{1}", a, flags=re.I | re.S)
print(r1)

輸出:
['c#n']

 

 (11) re.sub正則替換

re.sub("正則匹配規則",“需要換成的字符串”,“查找的字符串”,count=0,flag)

實戰 : c# 換成 python

import re
a = "c#phpc#javac#"
r1 = re.sub("c#", "python", a)

輸出:
pythonphppythonjavapython

 

count=0 :默認是0,所能被替換的最大選項

import re
a = "c#phpc#javac#"
r1 = re.sub("c#", "python", a,count=1)

輸出:
pythonphpc#javac#

 

內置函數 replace 同樣可以實現替換

a = "c#phpc#javac#"
print(a.replace("c#", "python"))
輸出:
pythonphppythonjavapython

 

(12) 把函數作為參數傳遞

sub第二個參數,可以接收函數。

根據不同的匹配結果做不同的操作。

import re
def conver(value):
    print(value)
    matched = value.group()
    print(matched)
    return "111" + matched + "111"
a = "c#phpc#javac#"
r1 = re.sub("c#", conver, a)
print(r1)

輸出:
<re.Match object; span=(0, 2), match='c#'>
c#
<re.Match object; span=(5, 7), match='c#'>
c#
<re.Match object; span=(11, 13), match='c#'>
c#
111c#111php111c#111java111c#111

 

實戰:匹配字符串,數字大于60變成9,否則變成0

import re
def conver(value):
    matched = value.group()
    if int(matched) >= 60:
        return "9"
    else:
        return "0"
a = "ABC123987456DE"
r1 = re.sub("d{2}", conver, a)
print(r1)

輸出:
ABC00906DE

 

(13) search與match函數

  • 搜索到了一個,就停止搜索
  • 返回結果都是組
  • match 從字符串首字母開始匹配
  • search 搜索字符串,直到找到滿足條件的字符串
a = "1490ABC123987456DE"
r1 = re.match("d", a)  #從字符串首字母開始匹配 
print(r1.group())
r2 = re.search("d", a)  #搜索字符串,直到找到滿足條件的字符串
print(r2.group())
print(r2.span())  # 返回位置

輸出:
1
1
(0, 1)

 

(14) group分組

實戰:獲取 A 和 E 中間的字符

0 是默認取值 ,獲取完整匹配結果。

a = "A 14956 63E234234E"
r1 = re.match("A(.*)E", a)
print(r1.group(1))   1 是第一個組

r1 = re.match("A(.*)E(.*)E", a)  # 可以有很多個組
print(r1.group(0, 1, 2))

print(r1.groups())  # 把匹配到的內容輸出

print(re.findall("A(.*)E(.*)E", a))

輸出:
 14956 63E234234
('A 14956 63E234234E', ' 14956 63', '234234')
(' 14956 63', '234234')
[(' 14956 63', '234234')]

 

 (15) JSON

【Json】 是一種輕量級的數據交換格式。

【JSON字符串】:符合json格式的字符串

  • 字符串是json的一種表現形式。

 

【優勢】:易于閱讀,解析,網絡傳輸效率高。跨語言交換數據。

 

 (16)序列化與反序列化

【反序列化】json.loads()

json字符串需要用雙引號。

實戰:json字符串轉換python的字典

import json
j_str = '{"name":"CiCi","age":18}'
print(type(json.loads(j_str)))

輸出:
<class 'dict'>

json字符串的 true 和 false是小寫開頭的。

json字符串的 null 是 None。

import json

j_str = '[{"name":"CiCi","flag":true},{"name":"CiCi","flag":false}]' 
print(json.loads(j_str))

輸出:[{'name': 'CiCi', 'flag': True}, {'name': 'CiCi', 'flag': False}]

 

【序列化】json.dumps()

import json
dict_p = {"name": "CiCi", "flag": True}
print(json.dumps(dict_p))

輸出:{"name": "CiCi", "flag": true}

分享到:
標簽:編程 python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定