Python異常處理、包管理器和正則表達(dá)式實例代碼
異常的處理:當(dāng)發(fā)生錯誤時,或者我們稱之為異常,Python 通常會停止并生成錯誤消息。
try:允許你測試代碼塊是否有錯誤。
exce pt:允許你處理錯誤。
else:允許你在沒有錯誤的情況下執(zhí)行代碼。
finally:允許你無論 try 和 except 的結(jié)果如何都執(zhí)行代碼。
x = 10 try: # 外層try...except... print(x) try: # 內(nèi)層try...except... print(y) except: # 內(nèi)層try...except...異常的處理 print("內(nèi)層try...except...發(fā)現(xiàn)錯誤") finally: # 內(nèi)層finally不管怎么樣都會運行 print("內(nèi)部try...except...已結(jié)束") except: # 外層try...except...異常的處理 print("外層try...except...發(fā)現(xiàn)錯誤") else: # 外層else,只要在沒有異常時候會運行 print("我是else,外層try...except...沒有錯誤") finally: # 外層finally不管怎么樣都會運行 print("外層try...except...已結(jié)束")
異常的類型:掌握異常類型有助于精準(zhǔn)捕獲和處理錯誤。
- Exception:大多數(shù)可處理異常的基類,其中常見的有。
- NameError:引用未定義的變量或函數(shù)時觸發(fā)。
print(x) # NameError: name 'x' is not defined
- TypeError:操作或函數(shù)應(yīng)用于不兼容類型的對象時觸發(fā)。
print(1 + "a") # TypeError: unsupported operand type(s) for +: 'int' and 'str'
- ZeroDivisionError:數(shù)值計算相關(guān)錯誤,除法或取模運算中除數(shù)為 0 時觸發(fā)。
print(10 / 0) # ZeroDivisionError: division by zero
- NameError:引用未定義的變量或函數(shù)時觸發(fā)。
- KeyboardInterrupt:用戶中斷
- SystemExit:程序退出
包管理器:PIP 是 Python 包的包管理器,什么是包?一個包包含模塊所需的所有文件。模塊是可以在項目中包含的 Python 代碼庫。
- 檢查 PIP 是否已安裝:打開電腦的命令提示符,在命令行中導(dǎo)航到 Python 腳本目錄的位置,然后鍵入以下內(nèi)容,pip --version,可檢查 PIP 版本。
- 下載包:下載包非常容易。打開命令行界面,并告訴 PIP 下載你想要的包。在命令行中導(dǎo)航到 Python 腳本目錄的位置,然后鍵入以下內(nèi)容,pip install camelcase,這樣就下載了名為“camelcase”的包。安裝包時,通過
-i參數(shù)指定鏡像源,pip install 包名 -i 鏡像源地址。以下是國內(nèi)穩(wěn)定且常用的 PyPI 鏡像源。 - 使用包:安裝包后,就可以使用了。將“camelcase”包導(dǎo)入你的項目。
import camelcase c = camelcase.CamelCase() txt = "hello world" print(c.hump(txt))
移除包:pip uninstall camelcase,卸載名為“camelcase”的包。PIP 包管理器將詢問你是否要確認(rèn)移除 camelcase 包,按
y,包將被移除。列出包:pip list,使用
list命令列出系統(tǒng)上安裝的所有包。也可以輸入pip freeze > requirements.txt,以TXT文件導(dǎo)出自己的安裝的包名。
正則表達(dá)式:正則表達(dá)式,或簡稱為正則,是用來描述字符模式的字符序列。正則表達(dá)式可以用來檢查字符串是否包含指定的搜索模式。是個獨有的工具:用來匹配或者提取字符串。不屬于Python基礎(chǔ)。屬于編程基礎(chǔ)。
- 正則表達(dá)式模塊:re模塊。
- findall方法:在字符串中找到正則表達(dá)式所匹配的所有子串,并返回一個列表
,如果沒有找到匹配的,則返回空列表。a = "python123123145java" print(re.findall("12", a)) print(re.findall("12A", a)) - match方法:嘗試從字符串的起始位置匹配一個模式,匹配成功返回的是一個匹配
對象(這個對象包含了我們匹配的信息),如果不是起始位置匹配成功的話,match()返回的是空。a = "python123123java" data = re.match('python',a) # 得到的是一個對象,要用group()方法進(jìn)行處理 print(data.group()) data2 = re.match('ython',a) print(data2.group()) # 這里會報錯,因為返回的是一個空值 - search方法:掃描整個字符串,匹配成功返回的是一個匹配對象(這個對象包含了我們匹配的信息),注意:search也只能匹配到一個,找到符合規(guī)則的就返回,不會一直往后找。
a = "python123123java" data = re.search('python',a) # 得到的是一個對象,我們要用group()方法進(jìn)行處理 print(data.group()) data2 = re.search('ython',a) print(data2.group())
- findall方法:在字符串中找到正則表達(dá)式所匹配的所有子串,并返回一個列表
- 元字符:
- 單字符匹配:
字符 描述 . 匹配任意1個字符(除了\n) [] 匹配 [] 中列舉的字符 \d 匹配數(shù)字,即0-9 \D 匹配非數(shù)字,即不是數(shù)字 \s 匹配空白,即 空格,tab鍵 \S 匹配非空白 \w 匹配單詞符,即a-z、A-Z、0-9、_ \W 匹配非單詞字符 b = '張三天天在玩4399小游戲,張三 hello 玩的.很開心' print(re.findall('...', b)) print(re.findall('[三小]', b)) print(re.findall('\d\d', b)) print(re.findall('\D', b)) print(re.findall('\s', b)) print(re.findall('\S', b)) print(re.findall('\w', b)) print(re.findall('\W', b)) - 代表數(shù)量的元字符:
字符 描述 * 匹配前一個字符出現(xiàn)0次或者無限次,即可有可無 + 匹配前一個字符出現(xiàn)1次或者無限次,即至少有1次 ? 匹配前一個字符出現(xiàn)0次或者1次,即要么有1次,要么沒有 {m} 匹配前一個字符出現(xiàn)m次 {m,} 匹配前一個字符至少出現(xiàn)m次 {m,n} 匹配前一個字符出現(xiàn)從m到n次 b = '張三天在玩4399小游戲,張三三三 hello 玩的.很開心' print(re.findall(r'三{1}',b)) # 匹配前一個字符出現(xiàn)2次 print(re.findall(r'三{1,}',b)) # 匹配前一個字符至少出現(xiàn)1次 print(re.findall(r'三{1,2}',b)) # 匹配前一個字符出現(xiàn)從1到2次 貪婪和非貪婪:正則默認(rèn)都是用貪婪模式去匹配數(shù)據(jù),就是盡可能的多去匹配符合要求的數(shù)據(jù),在非貪婪模式下,始終找最短的匹配。
a = '<img src = "xiaopengyou.jpg" alt="這是圖片">' b = '<html>000</html><td>ddd</td>' print(re.findall(r'<.*>',b))# 貪婪 print(re.findall(r'<.*?>',b))# 加上?變成非貪婪
- 代表邊界的元字符:
字符 描述 ^ 匹配字符串開頭 $ 匹配字符串結(jié)尾 \b 匹配一個單詞的邊界 \B 匹配非單詞邊界 - 分組匹配:
字符 描述 \| 匹配左右任意一個表達(dá)式 (ab) 將括號中的字符作為一個分組
- 單字符匹配:
到此這篇關(guān)于Python異常處理、包管理器和正則表達(dá)式的文章就介紹到這了,更多相關(guān)Python異常處理、包管理器和正則表達(dá)式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python自動化創(chuàng)建Word文檔的詳細(xì)過程
在現(xiàn)代辦公環(huán)境中,文檔處理占據(jù)了我們大量的時間,尤其是那些重復(fù)性高、格式固定的報告、合同或批量通知,你是否曾夢想過,只需幾行代碼,就能讓電腦自動生成這些Word文檔,今天,我將帶你深入探索如何利用Spire.Doc for Python庫,高效、精準(zhǔn)地創(chuàng)建和管理Word文檔2025-10-10
Python使用selenium實現(xiàn)網(wǎng)頁用戶名 密碼 驗證碼自動登錄功能
這篇文章主要介紹了Python使用selenium實現(xiàn)網(wǎng)頁用戶名 密碼 驗證碼自動登錄功能,實現(xiàn)思路很簡單,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05

