Pythonプログラミングの高速化-煩雑な作業を自動化(4)


04.電話番号とE-mailアドレス抽出プログラム
(0)要件:
長いページや文章の中で、すべての電話番号とメールアドレスを見つけるには
(1)完了するタスク
  • クリップボードからテキスト
  • を取得する.
  • テキストのすべての電話番号とE-mailアドレス
  • を見つけます.
  • クリップボード
  • に貼り付ける
    (2)コードに必要なタスク
  • pyperclipモジュールを使用して文字列をコピーおよび貼り付け
  • は2つの正規表現を作成し、1つは電話番号に一致し、もう1つはE-mailアドレスに一致する
  • である.
  • は、2つの正規表現に対して、最初の一致
  • だけでなく、すべての一致を見つけた.
  • 一致する文字列をフォーマットし、
  • を貼り付けるための文字列に配置する
  • テキストに一致が見つからない場合は、メッセージ
  • が表示されます.
    (3)電話番号に正規表現を作成する
    import pyperclip,re
    
    phoneRegex = re.compile(r'''(
    (\d{3}|\(\d{3}))?
    (\s|-|\.)?
    (\d{3})
    (\s|-|\.)
    (\d{4})
    (\s*(ext|x|ext.)\s*(\d{2,5}))?
    )''',re.VERBOSE)
    

    (4)E-mailの正規表現を作成する
    emailRegex = re.compile(r'''(
    [a-zA-Z0-9._%+-]+
    @
    [a-zA-Z0-9.-]+
    (\.[a-zA-Z]{2,4})
    )''',re.VERBOSE)
    

    (5)クリップボードのテキストにすべての一致を見つける
    import pyperclip,re
    
    phoneRegex = re.compile(r'''(
    text = str(pyperclip.paste())
    matches = []
    for groups in phoneRegex.findall(text):
    	phoneNum = '-'.join([groups[1],groups[3],groups[5]])
    	if groups[8]!=' ':
    		phoneNum += ' x'+groups[8]
    	matches.append(phoneNum)
    for groups in emailRegex.findall(text):
    	matches.append(groups[0])
    

    (6)すべての一致は1つの文字列に接続され、クリップボードにコピーされる
    for groups in emailReges.findall(text):
    	matches.append(groups[0])
    
    if len(matches)>0:
    	pyperclip.copy('
    '.join(matches)) print('Copied to clipboard:') print('
    '.join(matches)) else: print('No phone numbers or email address found.')

    (7)プログラムの実行
    Webブラウザを開き、ページのすべてのテキストを選択してクリップボードにコピーし、このプログラムを実行します.