<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前幾天在Python交流群裡邊,有個叫【^-^】的粉絲分享了一道Python基礎的題目,跟快遞資訊有關的,題目如下:
現在想要達到的效果如下:
針對這個問題,首先需要讀取列表的資訊,之後對列表進行切割,獲取列表中的省或者直轄市資訊,之後再判斷省位資訊中是否包含在地址資訊中,使用列表追加的方法,進行處理,這裡經常會用到字典和列表來儲存資訊,屢試不爽。
針對該問題,粉絲【^-^】給出瞭解決方法,直接上程式碼如下:
# coding: utf-8 def sp(s): citys = [] dizhi = [] dice = {} dic = {} for i in s: # print(i) a = i[1] city = a[0:2] zlib = a[0:2] citys.append(city) dizhi.append(zlib) cityss = set(citys) # 去重 citysss = list(cityss) # 轉為列表 d = dice.fromkeys(citysss) for key in d: h = [] for j in s: b = j[1] lgezi = b[0:2] if lgezi == key: h.append(j) dic[key] = h # print(dic) for key in dic: # 遍歷字典 print(key, dic[key]) if __name__ == '__main__': sp([ ['王*龍', '北京市海淀區蘇州街大恆科技大廈南座4層'], ['郭*峰', '河南省商丘市高新技術開發區恆宇食品廠'], ['趙*生', '河北省唐山市朝陽道與學院路路口融通大廈2408室'], ['張*', '陝西省咸陽市文匯東路6號西藏民族大學'], ['劉*民', '北京市大興區南海家園四里7號樓1單元902'], ['郭*蘭', '湖北省武漢市湖北省'], ['張*強', '河北省張家口市經開區鑽石南路11號'], ['鞠*龍', '山東省濰坊市玉清街江山帝景B區12號樓一單元14樓'], ['李*', '北京市海淀區西二旗智學苑5號樓超市'], ['許*康', '北京市西城區西單北大街甲133號'], ['葉*生', '江蘇省揚州市揚子江中路756號'], ['趙*興', '北京市海淀區西二旗上地資訊路1號金遠見大樓華緯訊301'], ['徐*革', '北京市海淀區閔莊路3號102棟二層206'], ['徐*', '安徽省淮南市金荷小區(金格商場旁)'], ['雷*', '北京市朝陽區望京街道望京sohoT1C座1201'], ['莊*', '浙江省杭州市恆生電子大廈'], ['蔡*恩', '湖北省武漢市仁和路沙湖港灣B區1103'], ['陳*', '江蘇省蘇州市巴城鎮湖濱北路193號牛吃蟹莊'], ['黃*', '北京市朝陽區霄雲路26號鵬潤大廈A座33層'], ['魏*飛', '河北省石家莊市新石北路與紅旗大街交口開元大廈502室'], ['張*', '山東省濟南市興港路三慶城市主人'], ['段*琪', '山西省臨汾市福利路堯鄉小區'], ['劉*', '北京市昌平區龍禧三街驪龍園601'], ['王*生', '上海市楊浦區邯鄲路復旦大學遺傳學樓319室'], ['王*君', '江蘇省揚州市葉挺路318號建行營業部'], ['王*義', '北京市東城區環球貿易中心D座'], ['韓*鑑', '北京市門頭溝區濱河路葡東小區七號樓4層D門'], ['羅*若', '陝西省西安市龍首北路宮園一號5號樓4單元'], ['王*', '北京市海淀區上地東路盈創動力大廈e座801c源清慧虹資訊科技'], ['馬*', '湖北省武漢市廟山中路10號名湖豪庭7棟1403'], ['常*峰', '山西省太原市迎新街'], ['侯*', '浙江省杭州市江陵路1541號'], ['許*娟', '上海市寶山區殷高西路高境二村177號502'], ['朱*', '北京市海淀區東昇鎮寶盛東路奧北科技園領智中心B座5層'], ['吳*峰', '湖北省武漢市幸福路鴻福花園1棟3006'], ['付*誠', '北京市海淀區觀林園'], ['滕*', '江蘇省南京市秣周東路11號雙子樓9號樓15樓君度科技'], ['石*剛', '遼寧省大連市大連市經濟技術開發區福泉北路20號'], ['程*', '北京市昌平區沙河兆豐家園'], ['武*', '北京市昌平區回龍觀西大街龍騰苑五區16號樓1單元202'], ['郭*欣', '北京市西城區阜成門 萬通新世界 B座1503'] ])
程式碼不算多,需要花點時間去讀,不過涉及的知識點並不複雜,基本上有點Python基礎,也可以理解。程式碼執行之後,可以看到效果如下:
不過後來我在讀取這份程式碼的時候,發現中間有個地方寫的著實有些冗餘,稍微修改下,程式碼方面簡潔一些,一些函數和變數命名加了一些對應的現實意義的單詞,可讀性強了一丟丟,程式碼如下:
# coding: utf-8 def sp(text): city = [] dice = {} dic = {} address = [info[-1] for info in text] for city_info in address: city.append(city_info[0:2]) cities = list(set(city)) # 先去重,然後轉為列表 # print(cities) dict_keys = dice.fromkeys(cities) for key in dict_keys: h = [] for info in text: address = info[-1] city_info = address[0:2] if city_info == key: h.append(info) dic[key] = h # print(dic) for key in dic: # 遍歷字典 print(key, dic[key]) if __name__ == '__main__': sp([ ['王*龍', '北京市海淀區蘇州街大恆科技大廈南座4層'], ['柴*虎', '北京市昌平區北七家鎮順瑋閣小區'], ['韓*', '遼寧省葫蘆島市小莊子鄉寶倉村'], ['魏*森', '北京市昌平區於辛莊路,賦騰國創中心,2樓'], ['鄧*明', '北京市豐臺區新華街三裡1號樓305'], ['趙*', '上海市寶山區寶山區高境鎮高境一村11號後3號車庫'], ['徐*亮', '北京市海淀區花園東路11號泰興大廈302'], ['張*凡', '北京市昌平區沙河鎮鬆蘭堡迎客家園507'], ['趙*', '北京市北京市海淀區農大國際創業園b區6065'], ['顧*天', '北京市海淀區上地東路1號華控大廈'], ['丁*', '上海市楊浦區安波路533弄碩和商務2號樓1102'], ['封*號', '江蘇省蘇州市陸家鎮陸豐東路199號水岸香堤2#2309'], ['王*哲', '上海市靜安區曲沃路430弄15號401'], ['劉**', '湖北省武漢市左嶺鎮 武漢華星光電一號門'], ['付*', '安徽省合肥市長江西路305號電信新技術樓'], ['魯*', '湖北省武漢市武大科技園宏業樓C座'], ['張*', '北京市朝陽區小營路13號亞非大廈7層8704室'], ['齊*', '湖北省武漢市珞喻路馬家莊'], ['王*', '北京市海淀區北塢嘉園北里9號樓三單元D01'], ['陳*龍', '北京市朝陽區北衛新園'], ['曹*生', '江蘇省無錫市澄南花苑'], ['沈*', '北京市海淀區中關村南大街甲18號北京國際大廈D座7層'], ['續*', '山西省晉中市中都廣場12層暢快車貸'], ['趙*全', '河北省唐山市李釗莊鎮大王莊村'], ['成*', '上海市虹口區東五小區641號樓2007'], ['方*', '上海市閔行區聯航路1399弄28號1103室'], ['曹*', '上海市浦東新區向城路15號24C'], ['韓*德', '北京市大興區棗園北里小區1號樓8單元202'], ['金*鵬', '浙江省溫州市溫州職業技術學院生活區快遞中心'], ['陶*明', '浙江省嘉興市南溪路桂苑小區23幢603'], ['李*ir', '北京市豐臺區南苑鄉 德鑫家園9號樓5單元50'], ['姜*傑', '山東省臨沂市鳳凰嶺大街惠民早餐'], ['l*xq', '遼寧省瀋陽市衛工南街4-4網點2門瀚辰跆拳道'], ['單*成', '山東省日照市日照職業技術學院'], ['韓*紅', '上海市楊浦區隆昌路619號10號樓二樓'], ['魏*琪', '北京市豐臺區漢威國際廣場4區12號樓'], ['楊*康', '北京市豐臺區豐臺科技園漢威廣場12棟'], ])
這裡其實還可以通過正規表示式來做地址資訊的提取,程式碼如下:
with open("地址資訊.txt", 'r', encoding='utf-8') as f: for line in f: content = re.compile(r"['(?P<name>.*?)', '(?P<address>.*?)']", re.S) result = content.finditer(line) for i in result: name = i.group("name") address = i.group("address") print(name, address)
可以得到使用者的姓名和地址資訊,如下圖所示:
之後將得到的資料可以存excel,之後通過pandas進行提取,這裡使用小小明大佬給的指導程式碼,可以提取省位,真不錯!
df['地區2']=df.地區.apply(lambda s: s[:(s in ("黑龍江省", "內蒙古自治區"))+2])
我是Python進階者。本文實際生活中的快遞資訊,基於Python程式設計,使用Python基礎知識中的列表、字典、函數等,實現了資料資訊的提取過程。
以上就是基於Python實現快遞資訊提取的詳細內容,更多關於Python快遞資訊提取的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45