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

歡迎訪問 生活随笔!

生活随笔

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

python

python正则表达式提取电话号码_Python学习笔模式匹配与正则表达式之电话号码和Email地址提取程序...

發布時間:2024/9/19 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python正则表达式提取电话号码_Python学习笔模式匹配与正则表达式之电话号码和Email地址提取程序... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隨筆記錄方便自己和同路人查閱。

#------------------------------------------------我是可恥的分割線-------------------------------------------

假設你有一個無聊的任務,要在一篇長的網頁或文章中,找出所有電話號碼和郵件地址。如果手動翻頁,可能需要查找很長時間。

如果有一個程序,可以在剪貼板的文本中查找電話號碼和 E-mail 地址,那你就只要按一下 Ctrl-A 選擇所有文本,按下 Ctrl-C 將它復

制到剪貼板,然后運行你的程序。它會用找到的電話號碼和 E-mail地址,替換掉剪貼板中的文本。當你開始接手一個新項目時,很容

易想要直接開始寫代碼。但更多的時候,最好是后退一步,考慮更大的圖景。我建議先草擬高層次的計劃,弄清楚程序需要做什么。

暫時不要思考真正的代碼,稍后再來考慮。現在,先關注大框架。例如,你的電話號碼和 E-mail 地址提取程序需要完成以下任務:

(1)從剪貼板取得文本。

(2) 找出文本中所有的電話號碼和 E-mail 地址。

(3)將它們粘貼到剪貼板。

(4)現在你可以開始思考,如何用代碼來完成工作。代碼需要做下面的事情:

(5) 使用 pyperclip 模塊復制和粘貼字符串。

(6)創建兩個正則表達式,一個匹配電話號碼,另一個匹配 E-mail 地址。

(7)對兩個正則表達式,找到所有的匹配,而不只是第一次匹配。

(8) 將匹配的字符串整理好格式,放在一個字符串中,用于粘貼。

(9)如果文本中沒有找到匹配,顯示某種消息。

這個列表就像項目的路線圖。在編寫代碼時,可以獨立地關注其中的每一步。每一步都很好管理。它的表達方式讓你知道在 Python

中如何去做。

#------------------------------------------------我是可恥的分割線-------------------------------------------

示例代碼:

#! python 3

# -*- coding:utf-8 -*-

# Autor: Li Rong Yang

import re,pyperclip

#定義正則表達式,找出文本中所有的電話號碼。

phoneRegex = re.compile(r'''(

#匹配區號,因為區號可能只是三位數字,也可能是括號中三位數字,所以使用?問號和管道匹配分組中的內容一次或零次

(\d{3}|\(\d{3}\))?

#匹配電話號碼的連接符,因為區號與號碼之間可能是字母也可能是短橫線或者.點符號,所以把他們分在一個組用管道和問號匹配

(\s|-|\.)?

#匹配短橫線后面的三位數字

(\d{3})

#匹配電話號碼的連接符,因為區號與號碼之間可能是字母也可能是短橫線或者.點符號,所以把他們分在一個組用管道和問號匹配

(\s|-|\.)

#匹配四個數字

(\d{4})

#匹配分機號

(\s*(ext|x|ext.)\s*(\d{2,5}))?

)''', re.VERBOSE)

#定義正則表達式,找出文本中所有的E-mail 地址。

emailRegex = re.compile(r'''(

#創建自定義字符分類,匹配小寫a到z、大寫A到Z和數字0到9,后面可以有._%+-

[a-zA-Z0-9._%+-]+

#自定義字符分類后面是安特符號

@

#自定義字符分類,匹配寫a到z、大寫A到Z和數字0到9,后面可以有.-

[a-zA-Z0-9.-]+

#匹配分組,.點后面可以是任意大小寫字母,可以有2到4個

(\.[a-zA-Z]{2,4})

)''',re.VERBOSE)

#從剪貼板取得文本。

text = str(pyperclip.paste())

#創建一個空列表,將所有的匹配保存在名為 matches 的列表變量中

matches = []

#循環匹配到的電話號碼

for groups in phoneRegex.findall(text):

#把匹配到的電話號碼,區號、前三位數字、后四位數字轉換為字符串,以斷橫杠分割

phoneNum = '-'.join([groups[1],groups[3],groups[5]])

#判斷分機號是否不等于空

if groups[8] != '':

#電話號碼中帶有分機號時,在分機號前面加空格和大寫X

phoneNum += ' X'+groups[8]

#把分機號追加到matches列表中

matches.append(phoneNum)

#循環匹配到的email地址

for groups in emailRegex.findall(text):

#分組0 匹配整個正則表達式,把email地址追加到matches列表中

matches.append(groups[0])

if len(matches) > 0:

# 將匹配的字符串整理好格式,放在一個字符串中,用于粘貼。

pyperclip.copy('\n'.join(matches))

print('Copied to clipboard:')

# 打印放入粘貼版的內容。

print('\n'.join(matches))

else:

# 如果文本中沒有找到匹配,顯示某種消息。

print('No phone numbers or email addresses found.')

運行結果:

總結

以上是生活随笔為你收集整理的python正则表达式提取电话号码_Python学习笔模式匹配与正则表达式之电话号码和Email地址提取程序...的全部內容,希望文章能夠幫你解決所遇到的問題。

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