日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python取出两个文件中相同的电话号码及地址(文件类型为:txt文本)

發布時間:2025/3/20 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python取出两个文件中相同的电话号码及地址(文件类型为:txt文本) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,準備好要處理的2個文件

1.文件1內容: Person_info1.txt

學員編號 學生姓名 學生年齡 手機號碼 E-mail地址 家庭住址 101 張三 18 13599713364 www.zhangsan@qq.com 江蘇省蘇州市工業園區津梁街 102 李四 20 15923796671 www.lisi.163.com 北京市朝陽區西北路石井街22103 趙五 17 18655301183 www.zhaofive.yahoo.com 山東省煙臺市芝罘區北大街55104 tony 30 15877563321 www.tonyliu.ibm.com 江蘇省蘇州市姑蘇區山塘街177105 馬云 47 15977560013 www.mayun.alibaba.com 浙江省杭州市西湖路1101888 106 Jack 20 13677569901 www.jack123@qq.com 廣東省深圳市南山區西麗159212 107 tom 19 18622349971 www.tom456@qq.com 山東省青島市人民路1234

2.文件1內容: Person_info2.txt

學員編號 學生姓名 學生年齡 手機號碼 E-mail地址 家庭住址 101 liupeng 18 13598717364 www.liupeng@qq.com 江蘇省蘇州市工業園區津梁街 102 小明 20 15923456767 www.xiaoming.163.com 北京市朝陽區西北路石井街22103 小李 17 18655301183 www.xiaoli.yahoo.com 山東省煙臺市芝罘區北大街56104 tony 30 15872356331 www.tonyliu.ibm.com 江蘇省蘇州市姑蘇區山塘街188105 馬云 47 15977560013 www.mayun.alibaba.com 浙江省杭州市西湖路1101888 106 Jack 20 13677569812 www.jack123@qq.com 廣東省深圳市南山區西麗1435107 bob 19 18622284971 www.bob456@qq.com 山東省青島市人民路1257

二,編寫代碼:

思路:

(1)通過正則表達式提取文本中的內容

(2)電話號碼為11位數字,第一位肯定是1,第二位必定包含在35678這幾個數字中,固定好前2位之后的9位只要匹配到全部是數字即可

(3)匹配住址因為全部是字符串,所以需要找2個文件中地址的共通性,出了北京市是已市開頭外其他的都是…省來起始的所以可以把 …省…市作為一個共通點來匹配

另外再建立一個起始 …市開始的字段匹配到北京市就可以了。接下來把第一個匹配跟第二個匹配合并就是我們想要的結果

代碼呈現

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' import os #導入OS模塊便于對系統本身的命令調用(文件操作) import re #導入re模塊用于正則表達式#獲取手機號碼 (創建獲取手機號碼方法) def get_moblie(path):pattern = re.compile(R"[1][35678]\d{9}") #正則表達式獲取文本中的手機號碼if not os.path.isfile(path):return Exception #如果不是文件就拋出異常else:try:with open(path,"r") as fd: # "r"為只讀模式。 with關鍵字打開文件(with關鍵字的使用可以規避close方法自動關閉)。fd為賦值變量file_data = fd.read() #讀取文件中所有內容except Exception as e:raise emobile_list = pattern.findall(file_data) #定義一個list接收獲取到的手機號碼return mobile_list# 獲取家庭住址 def get_homeaddress(path):part01 = re.compile(r".\w省市*\w*") #為什么要創建2個part上面描述中已經解釋參照上述描述part02 = re.compile(r".\w市區*\w*")if not os.path.isfile(path):return Exception #如果不是文件就拋出異常else:try:with open(path,"r") as fd:file_data = fd.read()except Exception as e:raise ehome_address = part01.findall(file_data) #定義一個list接收獲取到的家庭住址(包含省份的)home_address02 = part02.findall(file_data)#獲取到北京市起始的家庭住址home_address.append(home_address02[1]) #兩個list內容合并home_address02[1]代表只提取北京市起始的字符串return home_addressif __name__ == "__main__":path01 = R"C:\Users\Administrator\Demo02\Person_info01.txt"path02 = R"C:\Users\Administrator\Demo02\Person_info02.txt"#案例1: 遍歷path01中的手機號碼是否在path02中存在.file_mobile01 = []file_mobile02 = []try:file_mobile01 = get_moblie(path01)file_mobile02 = get_moblie(path02)except Exception as e:print("獲取到的手機號碼出現異常")set01 = set() # 去除重復的手機號碼for mobile in file_mobile01:if mobile in file_mobile02:set01.add(mobile)print("<<兩個文件中相同的手機號碼為>>:",end="\t")for i in set01:print(i,end=" ")print() print("========================================================================") homeaddress01 = get_homeaddress(path01) homeaddress02 = get_homeaddress(path02)#通過set集合的交集來得出相同的住址信息 setintersection = set(homeaddress01) & set(homeaddress02) #set(homeaddress01).intersection(set(homeaddress02)) #方法同上 #print("<<兩個文件中相同的家庭住址為>>:",setintersection)print("<<兩個文件中相同的家庭住址為>>:") for i in setintersection:print(i)

總結

以上是生活随笔為你收集整理的Python取出两个文件中相同的电话号码及地址(文件类型为:txt文本)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。