python——經常使用功能之文本處理

前言

在生活、工做中,python一直都是一個好幫手。在python的衆多功能中,我以爲文本處理是最經常使用的。下面是日常使用中的一些總結。環境是python 3.3python

0. 基礎

在python中,使用str對象來保存字符串。str對象的創建很簡單,使用單引號或雙引號或3個單引號便可。例如:正則表達式

s='nice'      #output: nice
s="nice"      #output: nice
s="Let's go"  #output: Let's go
s='"nice"'    #output: "nice"
s=str(1)      #output: 1
s='''nice
day'''        #output: nice
              #output: day

 

在python中,\n表明換行符,\t表明tab鍵數據庫

在python中,引用str中的某一段的內容很容易。例如:工具

s='123456789'
s[0]          #第一個字符:     output: 1
s[-1]         #倒數第一個字符: output: 9
s[:2]         #前2個字符:     output: 12
s[-2:]        #後2個字符:     output: 89
s[2:-2]       #去掉前2個和後2個剩餘的字符 output:34567

 在python中,判斷某一字符串是否在另外一個字符串中:this

'nice' in 'nice day' #output :True

task 1.  按照某種格式生產字符串

在python中,str對象有一個方法用於實現這種功能,這個方法是:str.format(*args,**kwargs)。例子:spa

'1+2={0}'.format(1+2)  #{0}是佔位符,其中0表示是第一個須要被替換的。output: 1+2=3
'{0}:{1}'.format('nice','day') #{0},{1}是佔位符,{0}指第一被替換,替換成nice,{1}第二個被替換,替換成day。output:nice:day

實際用途:code

個人手機拍照以後,手機的命名以下:orm

IMG_20130812_145732.jpg
IMG_20130812_144559.jpg

在電腦中,會根據相片的日期放到不一樣的文件夾,文件夾命名以下:對象

2013-08-10
2013-08-12

因此說,要對相片的命名進行一個轉換,這樣才能映射到相應的文件夾轉。代碼以下:blog

def getName(name):
    return '{0}-{1}-{2}'.format(name[4:8],name[8:10],name[10:12])

getName('IMG_20130812_145732.jpg')  #output: 2013-08-12

task 2. 替換字符串中的某一部分

 替換有2中方法,一種是使用str對象自帶的方法replace(),另外一種是使用re模塊中sub(0的。例如:

#replace
s='nice day'
s.replace('nice','good')    #s自己不改變,但會返回一個字符串:output: good day

#sub
import re
s='cat1 cat2 cat3 in the xxx'
re.sub('cat[0-9]','CAT',s)  #s自己不改變,但會返回一個字符串:output: CAT CAT CAT in the xxx

對於re模塊中的sub,須要瞭解正則表達式。

task 3. 拆分字符串

Excel能夠處處逗號分隔符格式的文件。對於這樣的字符串,咱們能夠把它拆成相應的字段。實現這個功能,主要使用str對象的自帶方法split。例如:

s='one,two,three'
s.split(',')                            #output: ['one', 'two', 'three']

task 4. 合併字符串

除了拆分功能以外,咱們能夠將拆分好的字段合併成一個字符串。實現這個功能,主要使用str對象自帶的方法join。例如:

l=['one', 'two', 'three']
','.join(l)                                #output: one,two,three

這個功能還能夠在this模塊中看到。

task 5. 整合

關於字符串的操做有不少。若是僅僅對一兩行字符串進行操做,顯示不出他的威力。在工做中,有可能會對文檔進行處理,有的文檔很大,手工的方式很差處理,這時,python就有用武之地。

例如,從數據庫中導出一個表table_1的數據,導出來的數據格式以下:

insert into table_1(field1,filed2,field3)
values(value1,value2,value3);
...
insert into table_1(field1,filed2,field3)
values(value1,value2,value3);

數據生成的文件的大小大概爲700M。要把這個表的數據導入到另外一個數據庫的表table_2中,table_1和table_2的表結構相同,僅僅是名字不一樣。這時,咱們能夠寫一個python腳本,將table_1替換成table_2。例如:

path_in='table1.data'
path_out='table2.data'
f_in=open(path_in)
f_out=open(path_out,'w')
for i in f_in.readlines():
    if 'insert into table_1(field1,filed2,field3)' in i:
        f_out.write(i.repalce('tabel_1','table_2'))
    else:
        f_out.write(i)
f_in.close()
f_out.close()

結束語

使用python,讓平常工做多了一個工具,多了一個選擇。能夠將一些重複的工做交給機器作,節省時間,提升效率。

相關文章
相關標籤/搜索