本文章記錄觀看B站python教程學習筆記和實踐感悟,視頻鏈接:【花了2萬多買的Python教程全套,現在分享給大家,入門到精通(Python全棧開發教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p=6&share_source=copy_web&vd_source=404581381724503685cb98601d6706fb
上節課學習正則表達式的簡介以及相關符號,re模塊中match函數的使用,re模塊中search函數和findall函數的使用,re模塊中sub函數和split函數的使用,本節課復習本章內容,本章習題,以及章節實戰演練——實戰一車牌歸屬地,實戰二統計指定字符出現的字數,實戰三格式化輸出商品信息,實戰四使用正則表達式提取圖片網址。
1.復習本章內容以及習題
本章學習內容如下:
復習完本章節的基礎知識,下面做一些章節習題:(這里只記錄了博主本人不熟悉的選擇題)
第四題,首先split是分格的意思,分出的結果為一個列表,排除A;對于split后面()的內容是充當一個分隔符的作用,它是不作為元素出現在列表中,排除BC。所以選D
本題是字符串檢索方法考查。回顧一下這兩個方法分別是什么,index()起始索引,而不是整個索引,的含義是要找的內容的第一個字符,在待搜索字符串中的位置,而且位置的索引從0開始,“正”字出現在“三更燈火五更雞,正是男兒讀書時”的第九個位置(“三”為0且包括了逗號),因此索引號為8;同理第三個根本找不到這句話,因此是報錯(與find區分).
findall()那句也找不到,但是不會報錯而是返回-1。
2.實戰一車牌歸屬地
代碼實現以及解釋:
lst=['京A8888','津B6666','吉A77766']
#遍歷操作
for i in lst:#對歸屬地就是列表的第一個,也就是檢索為0的字符area=i[0:1]#這是一個從0開始到1結束,但是不包括1的字符print(i,'歸屬地為:',area)
結果如下:
3.實戰二統計指定字符出現的字數
代碼實現以及解釋:
s='HelloPython,HelloJava,hellophp'
word=input('請輸入要統計的字符:')
#為了實現統計次數需要用count(),而且不區分大小寫
#因為是字符串和浮點數拼接,這就涉及到一個格式化的問題
print('{0}在{1}里一共出現了{2}'.format(word,s,s.upper().count(word)))#count()里面填的是需要計數的那個字符,這里就是統計的word(這是由用戶輸入的)
結果如下:
4.實戰三格式化輸出商品信息
分幾個步驟去做,第一個是準備數據,第二步是遍歷原數據,第三步格式化輸出。
代碼以及解釋如下:
#step1:創建表格數據。因為表格就是二維的列表,每一行列表都是一個產品
lst=[['01','電風扇','美的',500],['02','洗衣機','TCL',1000],['03','電風扇','老板',400]
]
#step2::二維列表的遍歷。二維列表的遍歷就是雙層for循環
print('編號\t\t名稱\t\t\t品牌\t\t單價')#\t表示空格(為了好看)
for i in lst:for j in i:print(j,end='\t\t')print()#換行。到這里才完成一個商品的遍歷輸出
#step3:格式化操作,有兩個,編號和價格
for i in lst:i[0]='0000'+i[0] #索引為0的是編號要變成六位i[3]='¥{0:.2f}'.format(i[3])#format()內表示的是需要填空的實際變量,也就是i索引為3的是價格,2f表示保留兩位小數,要加上¥print('編號\t\t\t名稱\t\t\t品牌\t\t單價')#\t表示空格(為了好看)
for i in lst:for j in i:print(j,end='\t\t')print()#換行。到這里才完成一個商品的遍歷輸出
結果如下:
5.實戰四使用正則表達式提取圖片網址
博主未獲得up主的資料,只能用wps掃了一下視頻截圖,然后使用AI修正,代碼如下:
import re# 被AI修正后的字符串s(確保所有引號為英文)
s = '''
"queryEnc":"%C3%CO%C5%AE","queryExt":"美女","listNum":1726,"displayNum":1102160,"gsm":"3c","bdFmtDispNum":"約1,100,000","bdSearchTime":"","isNeedAsyncRequest":0,"bdIsClustered":"1","data":[{"adType":"0","hasAspData":"0","thumbURL":"https://img1.baidu.com/it/u=272155668,1962283813&fm=268&fmt=auto","commodityInfo":null,"isCommodity":0,"middleURL":"https://img1.baidu.com/it/u=272155668,1962283813&fm=26&fmt=auto","shituToken":"aadb3a","largeTnImageUr1":"","hasLarge":0,"hoverURL":"https://img1.baidu.com/it/u=272155668,1962283813&fm=26&fmt=auto","pageNum":30,"objURL":"ipprf_z2C$QAzdH3FAzdH3F2t42d_z&e3Bkwt17_z&e3Bv54AzdH3Ft4w2j_fjw6viAzdH3Ff6v=ippr%nA%dF%dFetn_z&e3Bxt78dn_z&e3Bvg%dFstej%dFda81%dFam%dFdl%dF88%dF8ande8cm80banonllalnba80_z&e3B3r286juj6=ippr%nA%dF%dFetn_z&e3Bxt78dn_z&e3Bvg&wrr=daad&ftzj=u111,8aaa&q=wba&g=a&2=ag&u4p=3rj2?fjv=8m9abc98cd&p=an8vwcw9v9jl1nm88jdllww8dmuwnvvn","fromURL":"ippr_z2C$qAzdH3FAzdH3Fe_z&e3Bm_z&e3BvgAzdH3Fr65utsjAzdH3FowpviMtgt_z&e3Brir?et1=m8adm8","fromJumpUr1":"ippr_z2C$qAzdH3FAzdH3Fe_z&e3Bm_z&e3BvgAzdH3Fr65utsjAzdH3FowpviMtgt_z&e3Brir?et1=m8adm8","fromURLHost":"v.6.cn","currentIndex":"","width":800,"height":600,"type":"jpg","is_gif":0,"isCopyright":0,"resourceInfo":null,"strategyAssessment":"3141544242_1243_0_0","filesize":"","bdSrcType":"0","di":"157630","pi":"0","is":"0,0","imgCollectionword":"","hasThumbData":"0","bdsetImgNum":0,"partnerId":0,"spn":0,"bdImgnewsDate":"2020-06-0302:31","fromPageTitle":"美女</strong>熱舞","fromPageTitleEnc":"美女熱舞","bdSourceName":"","bdFromPageTitlePrefix":"","isAspDianjing":0,"token":"","imgType":"","cs":"272155668,1962283813","os":"1570395708,812629700","simid":"272155668,1962283813","personalized":"0","simid_info":null,"face_info":null,"xiangshi_info":null,"adPicId":"0","source_type":""},{"adType":"0","hasAspData":"0","thumbURL":"https://img0.baidu.com/it/u=1934854801,2871685401&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=313","commodityInfo":null,"isCommodity":0,"middleURL":"https://img0.baidu.com/it/u=1934854801,2871685401&fm=253&fmt=auto&app=138&f=JPEG?W=5008h=313","shituToken":"9bb791","largeTnImageur1":"","hasLarge":0,"hoverURL":"https://img0.baidu.com/it/u=1934854801,2871685401&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=313","pageNum":31,"objURL":"ipprf_z2C$qAzdH3FAzdH3F2t42d_z&e3Bkwt17_z&e3BV54AzdH3Ft4w2j_fjw6viAzdH3Ff6v=ippr%nA%dF%dFt42_z&e3B33da_z&e3BV54%dF7r%dFwsst42%dF8889%dFac8d8aSlnl%dFd8ac8daSlnl-d-8daa_z&e3B3r2&6juj6=ippr%nA%dF%dFt42_z&e3B33da_z&e3Bv54&wrr=daad&ftzj=ull11,8aaaa&q=wba&g=a&2=ag&u4p=3rj2?fjv=8m9abc98cd&p=bmcukd9vmml18lau1mjdub9dpnlmnakd"'
'''# 模式字符串,其實就是找網址的共同點,這里\d{1}表示數字只出現一次,\d*表示出現0或多次
pattern = 'https://img\d{1}.baidu.com/it/u=\d*,\d*?&fm=\d*?&fmt=auto'
# 匹配并打印結果
lst = re.findall(pattern, s)
for i in lst:print(i)
結果如下:
本節完?