Topic:
Suppose you have a boring task to find all the phone numbers and email addresses in a long page or article. If you turn pages manually, you may need to look for a long time. If you have a program that can find the phone number and e-mail address in the text of the Clipboard, just press Ctrl-a to select all the text, press Ctrl-c to copy it to the Clipboard, and then run your program. It will replace the text in the Clipboard with the phone number and e-mail address found.
Test text
Skip to main Contenthomesearch formsearchgo! Topicsarduinoart & designgeneral computinghacking & Computer Securityhardware/diyjavascriptkidslego? Lego? Mindstorms? Linux & Bsdskip to main contenthomesearch formsearchgo! Catalogmediawrite for UsAbout Ustopicsarduinoart & designgeneral computinghacking & Computer securityhardware/d Iyjavascriptkidslego? Lego? Mindstorms? Linux & bsdmangaminecraftprogrammingpythonscience & Mathscratchsystem administrationearly AccessGift Certificatesfree ebook edition with every print book purchased from nostarch.com! Shopping cart3 Items total: $53.48view cart checkoutcontact UsNo Starch Press, inc.245 8th StreetSan Francisco, CA 9410 3 usaphone:800.420.7240 or +1 415.863.9900 (9 a.m. to 5 p.m., M-f, PST) 传真: +1 415.863.9950Reach Us by Emailgeneral Inqui RIES: [Email protected]media requests: [email protected]academic requests: [email protected] (please See this page for academic review requests) help with your OrdER: [Email protected]reach Us on social mediatwitterfacebooknavigationmy accountlog outmanage your subscription Preferences. About Us | ★jobs! ★| Sales and Distribution | Rights | Media | Academic Requests | Conferences | Order FAQ | Contact Us | Write for Us | Privacycopyright 2018 No Starch Press, Inc.
Post-run results
Copied to clipboard:800-420-7240415-863-9900415-863-9950 [email protected][email protected][email protected][email protected]Hit any key to close this window...
Ideas
When you start taking over a new project, it's easy to start writing code directly. But more often, it's better to take a step back and consider the bigger picture. I suggest drawing up a high-level plan and figuring out what the procedure needs to do. Don't think about real code for the time being, think about it later.
1. Create a regular expression for your phone and a regular expression to create an e-mail
2. Match the Clipboard text
3. Copy the processed text to the Clipboard
Start writing the program now.
#! python3# phoneAndEmail.py - Finds phone numbers and email addresses on the clipboard.import re, pyperclip# 创建电话的正则表达式phoneRegex = re.compile(r'''( (\d{3}|\(d{3}\))? # 区号可选,444或(444) (\s|-|\.)? # 分隔符:字符或-或. 可选 (\d{3}) # 三个数字 (\s|-|\.)? # 分隔符:字符或-或. 可选 (\d{4}) # 四个数字 )''',re.VERBOSE)# 创建email的正则表达式emailRegex = re.compile(r'''( [a-zA-Z0-9._%+-]+ # username @ [a-zA-Z0-9.-]+ # domail name (\.[a-zA-Z]{2,4}) # dot-something )''',re.VERBOSE)# 匹配剪切板的文本text = str(pyperclip.paste())matches = []for groups in phoneRegex.findall(text): phoneNum = '-'.join([groups[1], groups[3], groups[6]]) matches.append(phoneNum)for groups in emailRegex.findall(text): 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.')
Analyze code
Re. Verbose is a parameter that allows a regular expression to ignore comments and whitespace characters. Verbose means that you can add some notes and make them more readable.
Regular expressions See: Python Regular
Another pit is groups, I didn't understand the difference between groups and group.
Group () is the meaning of intercept grouping, example:
import rea = "123abc456"print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0) #123abc456,返回整体print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1) #123print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2) #abcprint re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3) #456
Groups () returns a tuple containing all the group strings, from 1 to the included group number.
The code in Phonenum = '-'. Join ([groups[1], groups[3], groups[6]]) groups is a variable, don't look wrong.
Python practice exercise: Phone numbers and e-mail address extraction Programs