在生活、工作中,python一直都是一個(gè)好幫手。在python的眾多功能中,我覺(jué)得文本處理是最常用的。下面是平常使用中的一些總結(jié)。環(huán)境是python 3.3
0. 基礎(chǔ)
在python中,使用str對(duì)象來(lái)保存字符串。str對(duì)象的建立很簡(jiǎn)單,使用單引號(hào)或雙引號(hào)或3個(gè)單引號(hào)即可。例如:
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代表?yè)Q行符,\t代表tab鍵
在python中,引用str中的某一段的內(nèi)容很容易。例如:
s='123456789'
s[0] #第一個(gè)字符: output: 1
s[-1] #倒數(shù)第一個(gè)字符: output: 9
s[:2] #前2個(gè)字符: output: 12
s[-2:] #后2個(gè)字符: output: 89
s[2:-2] #去掉前2個(gè)和后2個(gè)剩余的字符 output:34567
在python中,判斷某一字符串是否在另一個(gè)字符串中:
'nice' in 'nice day' #output :True
task 1. 按照某種格式生產(chǎn)字符串
在python中,str對(duì)象有一個(gè)方法用于實(shí)現(xiàn)這種功能,這個(gè)方法是:str.format(*args,**kwargs)。例子:
'1+2={0}'.format(1+2) #{0}是占位符,其中0表示是第一個(gè)需要被替換的。output: 1+2=3
'{0}:{1}'.format('nice','day') #{0},{1}是占位符,{0}指第一被替換,替換成nice,{1}第二個(gè)被替換,替換成day。output:nice:day
實(shí)際用途:
我的手機(jī)拍照之后,手機(jī)的命名如下:
IMG_20130812_145732.jpg
IMG_20130812_144559.jpg
在電腦中,會(huì)根據(jù)相片的日期放到不同的文件夾,文件夾命名如下:
2013-08-10
2013-08-12
所以說(shuō),要對(duì)相片的命名進(jìn)行一個(gè)轉(zhuǎn)換,這樣才能映射到相應(yīng)的文件夾轉(zhuǎn)。代碼如下:
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對(duì)象自帶的方法replace(),另一種是使用re模塊中sub(0的。例如:
#replace
s='nice day'
s.replace('nice','good') #s本身不改變,但會(huì)返回一個(gè)字符串:output: good day
#sub
import re
s='cat1 cat2 cat3 in the xxx'
re.sub('cat[0-9]','CAT',s) #s本身不改變,但會(huì)返回一個(gè)字符串:output: CAT CAT CAT in the xxx
對(duì)于re模塊中的sub,需要了解正則表達(dá)式。
task 3. 拆分字符串
Excel可以到處逗號(hào)分隔符格式的文件。對(duì)于這樣的字符串,我們可以把它拆成相應(yīng)的字段。實(shí)現(xiàn)這個(gè)功能,主要使用str對(duì)象的自帶方法split。例如:
s='one,two,three'
s.split(',') #output: ['one', 'two', 'three']
task 4. 合并字符串
除了拆分功能之外,我們可以將拆分好的字段合并成一個(gè)字符串。實(shí)現(xiàn)這個(gè)功能,主要使用str對(duì)象自帶的方法join。例如:
l=['one', 'two', 'three']
','.join(l) #output: one,two,three
這個(gè)功能還可以在this模塊中看到。
task 5. 整合
關(guān)于字符串的操作有很多。如果僅僅對(duì)一兩行字符串進(jìn)行操作,顯示不出他的威力。在工作中,有可能會(huì)對(duì)文檔進(jìn)行處理,有的文檔很大,手工的方式不好處理,這時(shí),python就有用武之地。
例如,從數(shù)據(jù)庫(kù)中導(dǎo)出一個(gè)表table_1的數(shù)據(jù),導(dǎo)出來(lái)的數(shù)據(jù)格式如下:
insert into table_1(field1,filed2,field3)
values(value1,value2,value3);
...
insert into table_1(field1,filed2,field3)
values(value1,value2,value3);
數(shù)據(jù)生成的文件的大小大概為700M。要把這個(gè)表的數(shù)據(jù)導(dǎo)入到另一個(gè)數(shù)據(jù)庫(kù)的表table_2中,table_1和table_2的表結(jié)構(gòu)相同,僅僅是名字不同。這時(shí),我們可以寫(xiě)一個(gè)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()
結(jié)束語(yǔ)
使用python,讓日常工作多了一個(gè)工具,多了一個(gè)選擇?梢詫⒁恍┲貜(fù)的工作交給機(jī)器做,節(jié)省時(shí)間,提高效率。