python——常用功能之文字處理
前言
在生活、工作中,python一直都是一個好幫手。在python的眾多功能中,我覺得文字處理是最常用的。下面是平常使用中的一些總結。環境是python 3.3
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中,判斷某一字串是否在另一個字串中:
'nice' in 'nice day' #output :True
task 1. 按照某種格式生產字串
在python中,str物件有一個方法用於實現這種功能,這個方法是:str.format(*args,**kwargs)。例子:
'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
實際用途:
我的手機拍照之後,手機的命名如下:
IMG_20130812_145732.jpg IMG_20130812_144559.jpg
在電腦中,會根據相片的日期放到不同的資料夾,資料夾命名如下:
2013-08-10//python開發交流705673782 2013-08-12//技術上的交流切磋,一起學習進步
所以說,要對相片的命名進行一個轉換,這樣才能對映到相應的資料夾轉。程式碼如下:
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,讓日常工作多了一個工具,多了一個選擇。可以將一些重複的工作交給機器做,節省時間,提高效率。