国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python高級語法與正則表達式

這篇具有很好參考價值的文章主要介紹了Python高級語法與正則表達式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Python提供了 with 語句的寫法,既簡單又安全。

文件操作的時候使用with語句可以自動調(diào)用關閉文件操作,即使出現(xiàn)異常也會自動關閉文件操作。

# 1、以寫的方式打開文件
with open('1.txt', 'w') as f:
    # 2、讀取文件內(nèi)容
    f.write('hello world')

生成器的創(chuàng)建方式

生成器推導式

與列表推導式類似,只不過生成器推導式使用小括號 。

# 創(chuàng)建生成器
my_generator = (i * 2 for i in range(5))
print(my_generator)

# next獲取生成器下一個值
# value = next(my_generator)
# print(value)

# 遍歷生成器
for value in my_generator:
    print(value)

next 函數(shù)獲取生成器中的下一個值
for ?循環(huán)遍歷生成器中的每一個值?

yield生成器

yield 關鍵字生成器的特征:在def函數(shù)中具有yield關鍵字

def generator(n):
    for i in range(n):
        print('開始生成...')
        yield i
        print('完成一次...')
        
g = generator(5)
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))				----->    正常
print(next(g))  			----->    報錯
Traceback (most recent call last):
  File "/Users/cndws/PycharmProjects/pythonProject/demo.py", line 14, in <module>
    print(next(g))
StopIteration
def generator(n):
    for i in range(n):
        print('開始生成...')
        yield i
        print('完成一次...')
        
g = generator(5)
for i in g:
    print(i)

開始生成...
0
完成一次...
開始生成...
1
完成一次...
開始生成...
2
完成一次...
開始生成...
3
完成一次...
開始生成...
4
完成一次...

注意點:

代碼執(zhí)行到 yield 會暫停,然后把結(jié)果返回出去,下次啟動生成器會在暫停的位置繼續(xù)往下執(zhí)行

② 生成器如果把數(shù)據(jù)生成完成,再次獲取生成器中的下一個數(shù)據(jù)會拋出一個StopIteration 異常,表示停止迭代異常

③ while 循環(huán)內(nèi)部沒有處理異常操作,需要手動添加處理異常操作

④ for 循環(huán)內(nèi)部自動處理了停止迭代異常

yield關鍵字和return關鍵字

如果不太好理解yield,可以先把yield當作return,他們都在函數(shù)中使用,并履行著返回某種結(jié)果的職責。

這兩者的區(qū)別是:

return的函數(shù)直接返回所有結(jié)果,程序終止不再運行,并銷毀局部變量;

而有yield的函數(shù)則返回一個可迭代的 generator(生成器)對象,可以使用for循環(huán)或者調(diào)用next()方法遍歷生成器對象來提取結(jié)果。

def example():
    x = 1
    y = 10
    while x < y:
        yield x
        x += 1

example = example()
print(example)

yield與斐波那契數(shù)列

數(shù)學中有個著名的斐波拉契數(shù)列)

要求:數(shù)列中第一個數(shù)為0,第二個數(shù)為1,其后的每一個數(shù)都可由前兩個數(shù)相加得到:

例子:1, 1, 2, 3, 5, 8, 13, 21, 34, ...

現(xiàn)在我們使用生成器來實現(xiàn)這個斐波那契數(shù)列,每次取值都通過算法來生成下一個數(shù)據(jù),生成器每次調(diào)用只生成一個數(shù)據(jù),可以節(jié)省大量的內(nèi)存。

def fib(max): 
    n, a, b = 0, 0, 1 
    while n < max: 
        yield b      # 使用 yield
        # print b 
        a, b = b, a + b 
        n = n + 1
 
for n in fib(5): 
    print n

什么是正則表達式

正則表達式描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。

模式:一種特定的字符串模式,這個模式是通過一些特殊的符號組成的。 某種:也可以理解為是一種模糊匹配。

精準匹配:select * from blog where title='python';

模糊匹配:select * from blog where title like ‘%python%’;

正則表達式并不是Python所特有的,在Java、PHP、Go以及JavaScript等語言中都是支持正則表達式的。

正則表達式的功能

① 數(shù)據(jù)驗證(表單驗證、如手機、郵箱、IP地址)

② 數(shù)據(jù)檢索(數(shù)據(jù)檢索、數(shù)據(jù)抓?。?/p>

③ 數(shù)據(jù)隱藏(1356235 王先生)

④ 數(shù)據(jù)過濾(論壇敏感關鍵詞過濾)

什么是re模塊

在Python中需要通過正則表達式對字符串進行匹配的時候,可以使用一個re模塊

# 第一步:導入re模塊
import re
# 第二步:使用match方法進行匹配操作
result = re.match(pattern正則表達式, string要匹配的字符串, flags=0)
# 第三步:如果數(shù)據(jù)匹配成功,使用group方法來提取數(shù)據(jù)
result.group()

match函數(shù)參數(shù)說明:

參數(shù) 描述
pattern 匹配的正則表達式
string 要匹配的字符串。
flags 標志位,用于控制正則表達式的匹配方式,如:是否區(qū)分大小寫,多行匹配等等。參見:正則表達式修飾符 - 可選標志

匹配成功re.match方法返回一個匹配的對象,否則返回None。

我們可以使用group(num) 或 groups() 匹配對象函數(shù)來獲取匹配數(shù)據(jù)。

正則表達式可以包含一些可選標志修飾符來控制匹配的模式。修飾符被指定為一個可選的標志。多個標志可以通過按位 OR(|) 它們來指定。如 re.I | re.M 被設置成 I 和 M 標志:

修飾符 描述
re.I 使匹配對大小寫不敏感
re.L 做本地化識別(locale-aware)匹配,這個功能是為了支持多語言版本的字符集使用環(huán)境的,比如在轉(zhuǎn)義符\w,在英文環(huán)境下,它代表[a-zA-Z0-9_],即所以英文字符和數(shù)字。如果在一個法語環(huán)境下使用,缺省設置下,不能匹配"é" 或 "?"。加上這L選項和就可以匹配了。不過這個對于中文環(huán)境似乎沒有什么用,它仍然不能匹配中文字符。
re.M 多行匹配,影響 ^ 和 $
re.S 使 . 匹配包括換行在內(nèi)的所有字符
re.U 根據(jù)Unicode字符集解析字符。這個標志影響 \w, \W, \b, \B.
re.X VERBOSE,冗余模式, 此模式忽略正則表達式中的空白和#號的注釋,例如寫一個匹配郵箱的正則表達式。該標志通過給予你更靈活的格式以便你將正則表達式寫得更易于理解。

re模塊的相關方法

re.match(pattern, string, flags=0)

  • 從字符串的起始位置匹配,如果匹配成功則返回匹配內(nèi)容, 否則返回None

☆ re.findall(pattern, string, flags=0)

  • 掃描整個串,返回所有與pattern匹配的列表

  • 注意: 如果pattern中有分組則返回與分組匹配的列表

  • 舉例: re.findall("\d","chuan1zhi2") >> ["1","2"]

☆ re.finditer(pattern, string, flags)

  • 功能與上面findall一樣,不過返回的時迭代器

參數(shù)說明:

  • pattern : 模式字符串。

  • repl : 替換的字符串,也可為一個函數(shù)。

  • string : 要被查找替換的原始字符串。

  • count : 模式匹配后替換的最大次數(shù),默認 0 表示替換所有的匹配。

  • flags: 匹配方式:

    • re.I 使匹配對大小寫不敏感,I代表Ignore忽略大小寫

    • re.S 使 . 匹配包括換行在內(nèi)的所有字符

    • re.M 多行模式,會影響^,$

案例1:查找一個字符串中是否具有數(shù)字“8” ?

import re


result = re.findall('8', '13566128753')
# print(result)
if result:
    print(result)
else:
    print('未匹配到任何數(shù)據(jù)')

?案例2:查找一個字符串中是否具有數(shù)字

import re


result = re.findall('\d', 'a1b2c3d4f5')
# print(result)
if result:
    print(result)
else:
    print('未匹配到任何數(shù)據(jù)')

案例3:查找一個字符串中是否具有非數(shù)字

import re


result = re.findall('\D', 'a1b2c3d4f5')
# print(result)
if result:
    print(result)
else:
    print('未匹配到任何數(shù)據(jù)')

正則表達式編寫:查什么、查多少、從哪查

1、查什么

代碼 功能
.(英文點號) 匹配任意1個字符(除了\n)
[ ] 匹配[ ]中列舉的某個字符,專業(yè)名詞 => 字符簇
[^指定字符] 匹配除了指定字符以外的其他某個字符,^專業(yè)名詞 => 托字節(jié)
\d 匹配數(shù)字,即0-9
\D 匹配非數(shù)字,即不是數(shù)字
\s 匹配空白,即 空格,tab鍵
\S 匹配非空白
\w 匹配非特殊字符,即a-z、A-Z、0-9、_
\W 匹配特殊字符,即非字母、非數(shù)字、非下劃線

字符簇常見寫法:

① [abcdefg] 代表匹配abcdefg字符中的任意某個字符(1個)

② [aeiou] 代表匹配a、e、i、o、u五個字符中的任意某個字符

③ [a-z] 代表匹配a-z之間26個字符中的任意某個

④ [A-Z] 代表匹配A-Z之間26個字符中的任意某個

⑤ [0-9] 代表匹配0-9之間10個字符中的任意某個

⑥ [0-9a-zA-Z] 代表匹配0-9之間、a-z之間、A-Z之間的任意某個字符

字符簇 + 托字節(jié)結(jié)合代表取反的含義:

① [^aeiou] 代表匹配除了a、e、i、o、u以外的任意某個字符

② [^a-z] 代表匹配除了a-z以外的任意某個字符

\d 等價于 [0-9], 代表匹配0-9之間的任意數(shù)字

\D 等價于 [^0-9],代表匹配非數(shù)字字符,只能匹配1個

2、查多少

代碼 功能
* 匹配前一個字符出現(xiàn)0次或者無限次,即可有可無(0到多)
+ 匹配前一個字符出現(xiàn)1次或者無限次,即至少有1次(1到多)
? 匹配前一個字符出現(xiàn)1次或者0次,即要么有1次,要么沒有(0或1)
{m} 匹配前一個字符出現(xiàn)m次,匹配手機號碼\d{11}
{m,} 匹配前一個字符至少出現(xiàn)m次,\w{3,},代表前面這個字符最少要出現(xiàn)3次,最多可以是無限次
{m,n} 匹配前一個字符出現(xiàn)從m到n次,\w{6,10},代表前面這個字符出現(xiàn)6到10次

基本語法:

正則匹配字符.或\w或\S + 跟查多少

如\w{6, 10}

如.*,匹配前面的字符出現(xiàn)0次或多次

3、從哪查

代碼 功能
^ 匹配以某個字符串開頭
$ 匹配以某個字符串結(jié)尾

正則工具箱 :

正則表達式代碼生成工具 等文章來源地址http://www.zghlxwxcb.cn/news/detail-764093.html

到了這里,關于Python高級語法與正則表達式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Java 之正則表達式語法及常用正則表達式匯總

    Java 之正則表達式語法及常用正則表達式匯總

    正則表達式,又稱規(guī)則表達式。(英語:Regular Expression,在代碼中常簡寫為 regex、regexp 或 RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規(guī)則)的文本。 正則表達式是對字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱

    2024年02月09日
    瀏覽(31)
  • python正則表達式-正則基礎

    目錄 一、任一元素 二、匹配特定的字符類別 ? ? ? ? ?1、d? w 三、多個元素 ? ? ? ? ?1、兩位元素 [][] ? ? ? ? ?2、* + ? ? ? ? ? ?3、重復次數(shù) {} ? ? ? ? ?4、位置匹配 ^ $ ? ? ? ? ?5、子表達式() ????????[]:1、[ab]?匹配a或b; ? ? ? ?2、[0-9]?匹配任意一個數(shù)

    2024年02月05日
    瀏覽(22)
  • 老夫的正則表達式大成了,桀桀桀桀?。?!【Python 正則表達式筆記】

    特殊字符 .^$?+*{}[]()| 為特殊字符,若想要使用字面值,必須使用 進行轉(zhuǎn)義 字符類 [] [] 匹配包含在方括號中的任何字符。它也可以指定范圍,例: [a-zA-Z0-9] 表示a到z,A到Z,0到9之間的任何一個字符 [u4e00-u9fa5] 匹配 Unicode 中文 [^x00-xff] 匹配雙字節(jié)字符(包括中文) 在 [] 中

    2024年02月04日
    瀏覽(21)
  • PYthon正則表達式

    PYthon正則表達式

    正則表達式是對字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”))操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達對字符串的一種過濾邏輯。正則

    2024年01月17日
    瀏覽(66)
  • python 正則表達式

    python 正則表達式

    2024年01月17日
    瀏覽(29)
  • 機器學習與數(shù)據(jù)科學-專題1 Python正則表達式-【正則表達式入門-1】

    機器學習與數(shù)據(jù)科學-專題1 Python正則表達式-【正則表達式入門-1】

    為了完成本關任務,你需要掌握: 在 Python 中使用正則表達式; 最基礎正則表達式; 正則匹配函數(shù)。 在 Python 中使用正則表達式 正可謂人生苦短,我用 Python。Python 有個特點就是庫非常多,自然擁有正則匹配這種常見的庫,并且此庫已經(jīng)嵌入在 Python 標準庫中,使用起來非常

    2024年01月22日
    瀏覽(109)
  • 速通Python正則表達式

    幾乎所有語言中的正則表達式都有相類似的語法,python亦莫能外。 接下來直觀地看一下最常用的的三大函數(shù) 其中, re.match 要求從頭匹配; search 可以從任意位置匹配,但只返回第一個匹配的值的位置; findall 返回所有符合要求的值。 任意字符 . 匹配除了換行符之外的所有字

    2024年02月06日
    瀏覽(25)
  • Python 正則表達式轉(zhuǎn)義

    這篇文章是關于 Python 正則表達式轉(zhuǎn)義的。 此外,我們將介紹 Python 正則表達式轉(zhuǎn)義以及如何通過適當?shù)氖纠a使用它,以及 Python 正則表達式的多種用途。 此外,Python 支持使用正則表達式(或正則表達式)對字符串進行搜索和替換操作。 RegEx 是一種根據(jù)預定義模式匹配文

    2024年02月09日
    瀏覽(20)
  • python之正則表達式

    目錄 正則表達式 python正則表達式方法? match search findall finditer compile 元字符匹配 元字符 量詞 貪婪匹配和惰性匹配 正則表達式的group 語法 案例? 正則表達式又稱規(guī)則表達式,是使用單個字符串來描述、匹配某個句法規(guī)則的字符串,常被用來檢索、替換那些符合某個模式的文

    2024年02月14日
    瀏覽(17)
  • Python正則表達式(小結(jié))

    正則表達式(regular expression,有時簡寫為RegEx 或 regex)就是用一組由字母和符號組成的“表達式”來描述一個特征,然后去驗證另一個“字符串”是否符合/匹配這個特征。 (1)驗證字符串是否符合指定特征,比如驗證郵件地址是否符合特定要求等; (2)用來查找字符串,

    2024年02月05日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包