• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Python的幾個文字處理小技巧

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    一直以來,Perl都是以特強的文字處理功能著稱,其實Python在這方面也相當不錯。最近在項目中用到不少Python可圈可點的東西,在這里大概列一下,權當自己的Python Tips。 1、如果獲取郵件地址? 我們分析郵件的時候,從From和To頭信息中會提取到類似“DIrk Ye
     一直以來,Perl都是以特強的文字處理功能著稱,其實Python在這方面也相當不錯。最近在項目中用到不少Python可圈可點的東西,在這里大概列一下,權當自己的Python Tips。

    1、如果獲取郵件地址?
    我們分析郵件的時候,從From和To頭信息中會提取到類似“DIrk Ye ”的郵件地址,如果我們需要只保留完整的EMail地址,可能需要正則表達式來提取,由于郵件格式的多樣性,可能比較麻煩。Python提供了一個工具函數,可以方便的使用:

    import email.Utils

    def getCleanMailAddress(strAddr):
       emails = email.Utils.parseaddr(strAddr.lower())
       return emails[1]


    2、利用Mimetypes確定文件的擴展名:
    在郵件分析中,經常會碰到沒有指定文件名或者擴展名的附件,我們可以根據附件的MimeType來猜測其應有的擴展名:

    import mimetypes

    def getFileExtension(strContentType):
       guessmimes = mimetypes.guess_all_extensions(strContentType)
       if guessmimes:
         return guessmimes[-1]
       else:
         return ''

    另外,mimetypes.types_map中包含了所有運行系統可識別的MimeType,如果沒有你期望的類型,可以通過mimetypes.add_type(’audio/midi’, ‘.mid’)方法來添加自己的東西,甚至可以作出修改。

    3、使用證則表達式從字符串中提取指定的模式:
    Python的正則表達式也是非常強大的,有搜索、匹配、抽取等。有時候抽取是有點麻煩但非常有用的功能。假設我們會有大量的文本類似:

    abcd@mypdx.com
    aaaa@mypdx.com
    n234f@mypdx.com

    其中前半部分的名稱都是數字和字母的組合,現在我們使用證則表達式抽取名字部分:

    import re

    def getUserName(strAddr):
       addr_re = re.compile('^([0-9a-z]+)@(.*)')
       unames = addr_re.search(strAddr)
       if unames is not None:
         return mptos.group(1)
       else:
         return ''

    Python在文字處理方面還有很多特點,我只能把用到的東西列一下。有不少專門講解Python相關東西的書籍,有的還是免費的;比如專門講解Python文本處理的Text Processing in Python,實用而精彩,而另外一本Python Cookbook也是相當不錯的讀物,現在已經有第二版了,覆蓋了Python2.3、2.4的新特性;去Python主站看看有什么適合你的書:http://wiki.python.org/moin/PythonBooks

    Python Cookbook相關的兩篇文章:

    Cooking with Python, Part 1
    Cooking with Python, Part 2

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>