標準庫學(xué)習(xí):
日常應(yīng)用比較廣泛的模塊是:
1. 文字處理的 re
2. 日期類型的time、datetime
3. 數(shù)字和數(shù)學(xué)類型的math、random
4. 文件和目錄訪問的pathlib、os.path
5. 數(shù)據(jù)壓縮和歸檔的tarfile
6. 通用操作系統(tǒng)的os、logging、argparse
7. 多線程的 threading、queue
8. Internet數(shù)據(jù)處理的 base64 、json、urllib
9. 結(jié)構(gòu)化標記處理工具的 html、xml
10. 開發(fā)工具的unitest
11. 調(diào)試工具的 timeit
12. 軟件包發(fā)布的venv
13. 運行服務(wù)的main
單字正則匹配符號: . ^ (匹配空行) .*?(非貪婪匹配,用于多個相同字符只取首次) r'(\d+)-(\d+)-(\d+)'(r表示\無轉(zhuǎn)譯功能)
import re
p = re.compile(r'(\d+)-(\d+)-(\d+)')
print (p.match('2018-05-10').group())
#輸出結(jié)果2018-05-10
print (p.match('2018-05-10').group(1))
#輸出結(jié)果2018
print (p.match('2018-05-10').group(2))
#輸出結(jié)果05
print (p.match('2018-05-10').groups() )
#輸出結(jié)果('2018', '05', '10')
year, month, day = p.match('2018-05-10').groups()
print(year)
#輸出結(jié)果2018
match是完整匹配
search是搜索匹配,下面例子match無法正確匹配,但search可以
import re
p = re.compile(r'(\d+)-(\d+)-(\d+)')
print (p.search('aa2018-05-10bb'))
#輸出結(jié)果<_sre.SRE_Match object; span=(2, 12), match='2018-05-10'>,其中span是位置,match是匹配到結(jié)果
sub是字符替換功能
phone = '123-456-789 # 這是電話號碼'
p2 = re.sub(r'#.*$','',phone)
print(p2)
#輸出結(jié)果123-456-789,把后面注釋替換為空
p3 = re.sub(r'\D','',p2)
print(p3)
#輸出結(jié)果123456789,把中間-替換為空
findall是全空間字符串搜索匹配
import re
string = "x abc y 123 z 123"
pattern = re.compile(r'\d+')
print(re.search(pattern,string))
# 輸出結(jié)果<re.Match object; span=(8, 11), match='123'>,找到1個123
print(pattern.findall(string))
#輸出結(jié)果 ['123', '123'],找到多個123