欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python讀取eml文件并用正則表達(dá)式匹配郵箱的代碼

 更新時(shí)間:2022年11月08日 09:34:24   作者:一晌小貪歡  
今天接到一個(gè)需求有一個(gè)同事離職了,但是留下了非常多的郵件,我需要將他的郵件進(jìn)行分類,只要郵件中以@xxx.com結(jié)尾的存放在文件夾中,否則放在另一個(gè)文件夾中,這篇文章主要介紹了python讀取eml文件并用正則匹配郵箱,需要的朋友可以參考下

今天接到一個(gè)需求有一個(gè)同事離職了,但是留下了非常多(2W多封)的郵件,我需要將他的郵件進(jìn)行分類,只要郵件中以@xxx.com結(jié)尾的存放在文件夾中(下圖名叫【是】的文件夾),否則放在另一個(gè)文件夾中(下圖名叫【否】的文件夾)。 目錄結(jié)構(gòu)

在這里插入圖片描述

代碼注意事項(xiàng)

import email(我發(fā)現(xiàn)是內(nèi)置模塊,不用安裝) 下面是注意事項(xiàng)(就當(dāng)是注釋吧!?。。? 1、提取包含一下后綴的郵箱,我用了split(“@”),所以不用寫 @

e_a = [‘Honeywell.com’, ‘honeywell.com’, ‘garrettmotion.com’, ‘HONEYWELL.COM’, ‘resideo.com’]

2、提取,收件人、發(fā)件人、抄送人的郵箱(這個(gè)是可以不寫的,但是我這個(gè)代碼是借鑒的,沒找到提取全部?jī)?nèi)容的函數(shù),只找到提取內(nèi)容的函數(shù),所以加上了下面的代碼)

fjr = email.utils.parseaddr(msg.get(“from”))[1]
sjr = email.utils.parseaddr(msg.get(‘to’))[1]
csr = email.utils.parseaddr(msg.get(‘cc’))[1]
print(“發(fā)件人”, fjr)
print(“收件人”, sjr)
print(“抄送人”, csr)

3、將eml文件內(nèi)容與收件人、發(fā)件人、抄送人拼接,并且加 " " 間隔,不加會(huì)有些小問題

text = text + " " + fjr + " " + " " + " " + " " + sjr + " " + " " + csr

4、正則匹配郵箱

prog = re.compile(r’[a-zA-Z0-9_.±]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+')
res = prog.findall(text)

5、移動(dòng)文件 os.remove()

完整代碼

import email
import os
import re
from email import policy
from email.parser import BytesParser


e_a = ['Honeywell.com', 'honeywell.com', 'garrettmotion.com', 'HONEYWELL.COM', 'resideo.com']
for f in os.listdir("./數(shù)據(jù)源/"):
    # print(f)
    text = ""
    with open("./數(shù)據(jù)源/" + f, 'rb') as fp:
        msg = BytesParser(policy=policy.default).parse(fp)
    fjr = email.utils.parseaddr(msg.get("from"))[1]
    sjr = email.utils.parseaddr(msg.get('to'))[1]
    csr = email.utils.parseaddr(msg.get('cc'))[1]
    print("發(fā)件人", fjr)
    print("收件人", sjr)
    print("抄送人", csr)
    if msg.get_body(preferencelist=('plain'))==None:
        text = text + " " + fjr + " " + " " + " " + " " + sjr + " " + " " + csr
    else:
        text = msg.get_body(preferencelist=('plain')).get_content()
        text = text + " " + fjr + " " + " " + " " + " " + sjr + " " + " " + csr
    # print(text)

    prog = re.compile(r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+')
    res = prog.findall(text)
    for e in res:
        res1 = e.split("@")[1]
        if res1 in e_a:
            print(f, "在")
            ori = "./數(shù)據(jù)源/" + f
            now = "./是/" + f
            os.rename(ori, now)
            break
    else:
        ori = "./數(shù)據(jù)源/" + f
        now = "./否/" + f
        os.rename(ori, now)
        print(f, "不在")

下面看看python正則表達(dá)式匹配郵箱

下面來看看python驗(yàn)證郵箱模式的例子。

(首先還是把環(huán)境列出來)

環(huán)境:python 2.7.10

1. 一次匹配多個(gè)郵箱的情況

下面的例子中:郵箱中可以出現(xiàn) 數(shù)字、大小寫字母、下劃線、和橫線(-)

# -*- coding:utf-8 -*-
# 郵箱格式-正則表達(dá)式匹配
 
import re
 
# 一次匹配多個(gè)郵箱
str1 = 'aaf ssa@ss.net asdf  asdb@163.com.cn asdf ss-a@ss.net asdf asdd.cba@163.com afdsaf'
 
reg_str1 = r'([\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+)'
 
mod = re.compile(reg_str1)
 
items = mod.findall(str1)
 
for item in items:
    print item

結(jié)果輸出:

Center

2. 一次匹配一個(gè)

這種情況,常見在登錄界面用戶名為郵箱時(shí), 此時(shí)一個(gè)字符串只有一個(gè) 郵箱

# 只匹配一個(gè)
str2 = 'ssa_a-c@ss.net.cn'
reg_str2 = r'(^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$)'
mod = re.compile(reg_str2)
items = mod.findall(str2)
 
for item in items:
    print item

結(jié)果輸出:

Center

到此這篇關(guān)于python讀取eml文件并用正則匹配郵箱的文章就介紹到這了,更多相關(guān)python讀取eml文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用numpngw和matplotlib生成png動(dòng)畫的示例代碼

    使用numpngw和matplotlib生成png動(dòng)畫的示例代碼

    這篇文章主要介紹了使用numpngw和matplotlib生成png動(dòng)畫的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python打開文件的方式有哪些

    python打開文件的方式有哪些

    在本篇文章里小編給大家分享了關(guān)于python打開文件的方式,需要的朋友們可以學(xué)習(xí)參考下。
    2020-06-06
  • python中子類繼承父類的__init__方法實(shí)例

    python中子類繼承父類的__init__方法實(shí)例

    這篇文章主要給大家詳細(xì)介紹了python中子類如何繼承父類的__init__方法,文中給出了詳細(xì)的示例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定參考價(jià)值,有需要的朋友們下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-12-12
  • Flask中jinja2的繼承實(shí)現(xiàn)方法及實(shí)例

    Flask中jinja2的繼承實(shí)現(xiàn)方法及實(shí)例

    在本篇文章里小編給大家分享的是一篇關(guān)于Flask中jinja2的繼承實(shí)現(xiàn)方法及實(shí)例,有興趣的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • Python圖像處理之圖像增廣算法詳解

    Python圖像處理之圖像增廣算法詳解

    圖像增廣算法在計(jì)算機(jī)視覺領(lǐng)域扮演著至關(guān)重要的角色,本文將著重介紹圖像增廣算法中的三個(gè)關(guān)鍵方面:圖像旋轉(zhuǎn)、圖像亮度調(diào)整以及圖像裁剪與拼接,感興趣的可以了解一下
    2023-05-05
  • python通過socket實(shí)現(xiàn)多個(gè)連接并實(shí)現(xiàn)ssh功能詳解

    python通過socket實(shí)現(xiàn)多個(gè)連接并實(shí)現(xiàn)ssh功能詳解

    這篇文章主要介紹了python通過socket實(shí)現(xiàn)多個(gè)連接并實(shí)現(xiàn)ssh功能詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • PyTorch中Tensor的維度變換實(shí)現(xiàn)

    PyTorch中Tensor的維度變換實(shí)現(xiàn)

    這篇文章主要介紹了PyTorch中Tensor的維度變換實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python機(jī)器學(xué)習(xí)darts時(shí)間序列預(yù)測(cè)和分析

    python機(jī)器學(xué)習(xí)darts時(shí)間序列預(yù)測(cè)和分析

    這篇文章主要介紹了python機(jī)器學(xué)習(xí)darts時(shí)間序列預(yù)測(cè)和分析使用實(shí)例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • python3.x提取中文的正則表達(dá)式示例代碼

    python3.x提取中文的正則表達(dá)式示例代碼

    這篇文章主要介紹了python3.x中提取中文的正則表達(dá)式的書寫,需要的朋友可以參考下
    2019-07-07
  • python 矢量數(shù)據(jù)轉(zhuǎn)柵格數(shù)據(jù)代碼實(shí)例

    python 矢量數(shù)據(jù)轉(zhuǎn)柵格數(shù)據(jù)代碼實(shí)例

    這篇文章主要介紹了python 矢量數(shù)據(jù)轉(zhuǎn)柵格數(shù)據(jù)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評(píng)論