python 字符串操做

1.字符串的对齐方式:
①:center(int[,str])
>>> string = 'Fishhat'
>>> string.center(55)
'                              Fishhat                              '
>>> string.center(55,'*')
'************************Fishhat************************'
②:ljust(int[,str])
>>> string.ljust(55)
'Fishhat                                                            '
>>> string.ljust(55,'*')
'Fishhat************************************************'
③:rjust(int[,str])
>>> string.ljust(55)
'                                                            Fishhat'
>>> string.ljust(55,'*')
'************************************************Fishhat'
④:%(int)s
>>> print '% 55s' % string
Fishhat
git


2.字符串中的转义字符:
\\    斜杠
\'    单引号
\"    双引号
\a    系统喇叭
\b    退格符
\n    换行符
\t    横向制表符
\v    纵向制表符
\r    回车符
\f    换页符
\o    八进制数表明的字符    #还搞不懂...
\x    十六进制数表明的字符   #还搞不懂...
\000 终止符,忽略\000后的所有字符
api

 

3.字符串中的转义符过滤函数:
①:strip()--过滤字符串中全部的转义符
②:lstrip()--过滤字符串中第一个转义符
③:rstrip()--过滤字符串中最后的转义符
后记:在使用的时候返回的结果不是预想中的正确结果.还待查询相关具体资料
数组

 

4.字符串的链接
①:Python中可使用'+'、'+='、链接若干个字符串,若是是如下状况,Python则自动链接:
>>> str = 'fish' 'hat' #若干个字符串之间若是只有空格,Python会自动链接
>>> print str
fishhat
>>> str += ' learning Python!' #使用运算符追加字符串
>>> print str
fishhat learning Python
②:使用str2.join(str)函数进行链接,其中str为须要链接的字符串序列或者一个字符串,str2为链接中填补的字符:
>>> string = ('apple','banana','china')
>>> print '-'.join(string)      #向string这个元组中的多个字符串元素之间加上'-'而后输出
apple-banana-china
>>> print ''.join(string)      #加入的字符也能够是空的
applebananachina
>>> print '-'.join('fishhat')   #直接使用
f-i-s-h-h-a-t                     #自动在每一个子字符中加入'-'
app

 

5.用split(str[,int])函数截取字符串
>>> string = 'f-i-s-h-h-a-t'
>>> string.split('-')           #按'-'做为截取子字符串的符号,也就是说遇到一个'-'则截取一个子字符
['f','i','s','h','h','a','t']           #最后返回一个截取获得的子字符列表
>>> string.split('-',2)         #在按'-'截取子字符的时候,当截取到第2个'-'的时候就中止截取,后面的字符所有按一个子字符返回(也就是说无论有没有'-'Python都不会理 了,它认为你只指定了2个'-'有效)
['f','i','s-h-h-a-t']              #实际上返回了三个子字符,由于在Python找到第一个'-'以前已经有一个'f'就把'f'作子字符
ide


后记:这里很容易混淆,后面的整数参数(不提供系统默认截取全部的)其实就至关于你要在字符串中画多少条 界,至关于切一条蛋糕,你切两刀是否是得三块?至于每块蛋糕的长短,就取决于你在蛋糕上作好的标记,也就至关于刚才的'-'函数

 

6.startswith()函数和endswith()函数
①:startswith(substring[,start[,end]])--用于判断字符串是否以substring字符开始的,start和 end须要对比的字符区间,默认是整个字符串,成功返回True失败返回False
>>> str = 'fishhat'
>>> str.startswith('fi')
True
>>> str.startswith('sh',2,4)
True
>>> str.startswith('sh',)
②:endswith(substring[,start[,end]])--用于判断字符串是否以substring字符结束的,start和end是 须要对比的字符区间,默认是整个字符串,成功返回True失败返回False
>>> str.endswith('hat')
True
>>> str.endswith('ha',4,6)
True
spa

1.实现字符串的反转orm

因为Python目前没有专门用于字符串反转的函数因此自定义一个,实现方法是经过从字符串的尾部开始取得子字符,而后逐个 链接起来后返回一个完整的反转字符串:排序

>>> def reverse(str):
>>> ... rstr = ''               #定义一个用于链接字符串后返回的变量
>>> ... lstr = list(str)      #将字符串分解成一个列表,即一个子字符为列表的一个元素
>>> ... for i in range(len(str),0,-1):    #反向遍历索引,起始值为字符串的长度(就是以尾部到首部的顺序生成索引)
>>> ...      rstr += ''.join(lstr[i-1])        #注意这里的索引得减去1,不然原字符串的第一个字符就不能返回(由于是0)
>>> ... return rstr                              #返回通过反向遍历字符串从新链接起来的反向字符串
>>> ...
>>> string = 'Fishhat'
>>> list(string)                         #这里先补上刚才接触到list()函数的用法与功能
>>> ['F','i','s','h','h','a','t']          #返回一个子字符集合的列表
>>> print reverse(string)       #试试刚才自定义的字符串反转函数怎么样
tahhsiF                                  #好样的,咱们成功的把字符反过来了
索引

后记:不知道是否是Python'蓄意'跟我搞了个乌龙(汗死了~~囧!!!):

>>> def reverse(str):          #这个函数比上面那个精简了一些
>>> ... lstr = list(str)          #解包--把字符串分解成子字符组成的列表
>>> ... lstr.reverse()           #使用列表的reverse()方法对列表内的元素倒序排列
>>> ... rstr = ''.join(lstr)      #打包--把列表内的子字符从新链接起来
>>> ... return rstr               #返回链接后的结果
>>> string = 'ABCDE'
>>> print reverse(string)
EDCBA   
让我更囧的东西还在下面....Python这小子居然再次耍我:

>>> def reverse(str):          #比上面的都精简.看到这里我就无语了~~
>>> ... return str[::-1]          #直接返回经过索引倒序排序的结果
>>> ...
>>> string = 'ABCDE'
>>> print reverse(string)
EDCBA

2.字符串的查找与替换--能够用两个函数实现:find()、rfind(),这两个函数的不一样之处只是查找的顺序不一样
①find(substring[,start[,end]])--在字符串中查找子字符substring,后面的两个可选参数是进行切片查找
若是在字符串中找到substring则返回索引(若是字符串中有多个结果则返回第一次出现的索引),没找到返回-1


>>> string = 'I am Fishhat'
>>> print string.find('F')          #记住.在查找的时候是区分大小写的
5
>>> print string.find('f')            #试试看小写
-1                                           #找不到,因此是区分大小写的
>>> print string.find('h',2,5)
-1                                          #索引2至5之间没找到'h'
>>> print string.find('h',5,-1)   # 索引5到字符串的最后一个索引
8                                            #找到了,在第8个索引

②rfind(substring[,start[,end]])--跟上面的没什么两样,只是在查找子字符串的时候是从字符串的尾部开始找的,下 面例子很好:


>>> string = 'I am Fishhat'
>>> print string.find('h')       #先看看find()方法的结果
8                                         #找到了,在第八个索引
>>> print string.rfind('h')      #而后试试rfind()方法看看跟上面有什么不同的
9                                            #注意到了没?'I am Fishhat'中是否是有两个'h'呢?
#由于find()从左至右(顺序)开始查找的,找到的第一个'h'是在第8个索引,索引find()就返回咯
#而rfind()不同,它是从右至左(倒序)进行查找的,找到的第一个'h'是在第9个索引.那就返回倒序查找先发现的咯,固然是9了

 

1.替换字符串--replace(old,new[,max]):替换字符串中找到的old为new,若是字符串中找到了多个old字串,则可以使 用max指定替换多少个old(默认是替换全部),再有的就是.若是在字符串没有找到old字串.则返回原字符串

>>> str = 'AAAAABBBBBDDDDD'
>>> str.replace('D','C')       #把字符串中全部的D替换为C
'AAAAABBBBBCCCCC'
>>> str.replace('A','a',3)     #替换字符串中的3个A为a
'aaaAABBBBCCCCC'               #replace()函数的操做不会影响原字符串.只是拷贝原字符串而后进行操做而已

2.字符串与时间格式的转换

首先看看格式化日期的时候经常使用到的标记
%a 英文星期的简写
%A 英文星期的完整拼写
%b 英文月份的简写
%B 英文月份的完整拼写
%c 本地当前的日期与时间
%d 日期数,1-31之间
%H 小时数,00-23之间
%I 小时数,01-12之间
%m 月份,01-12之间
%M 分钟数,01-59之间
%j 本年从第1天开始计数到当天的天数
%w 星期数,0-6之间(0是周日)
%W 当天属于本年的第几周,周一做为一周的第一天进行计算
%x 本地的当天日期
%X 本地的当前时间
%y 年份,0-99之间
%Y 年份的完整拼写

①时间转为字符串--strftime(format[,tuple]),其中format为转换格式类型tuple为一个时间元组

>>> import time          #因为获取时间和使用转换函数需用到time模块.因此必须导入
>>> str = time.strftime('%Y-%m-%d %X',time.localtime()) #time,localtime()返回以本地时间的全部参数为元素的元组
>>> print str
2009-12-09 21:36:35

②字符串转为时间--须要用到time模块strptime()函数和datetime模块datetime()函数
strptime(string,format)--把字符串string以format的格式返回一个时间的元组(元组内有齐全的时间元素,可是若是字 符串中只有几个有用的时间信息,其余的元素默认或取本地时间的一些信息)
>>> str = '2009/12/09'
>>> str = time.strptime(str,'%Y/%m/%d')   #注意后面的获取字符串中的时间的格式.对应原字符串中年月日之间的间隔符号
>>> print str
time.struct_time(tm_year=2009, tm_mon=12, tm_mday=9, tm_hour=0, tm_min=0, tm_sec
=0, tm_wday=2, tm_yday=343, tm_isdst=-1)      #能够注意到元组中前三个元素都是刚才字符串中获得的值,后面的信息都没没获取到
datetime(year,month,day[,hour[,minute[,second[,microsecend[,tzinfo]]]]]) 函数返回一个datetime类型的变量,这是一种特殊的变量,也就是说,时间型的
>>> str = datetime.datetime(2009,12,9)     #定义一个datetime变量,注意后面参数中的月或日,只能单写也就是说,9月或9日不能写成09月或09日,必须单写
>>> print str
2009-12-09 00:00:00                        #但显示却会显示完整的,好比其中的9日显示为了09日,还有,默认时分秒为0
>>> type(str)
<type 'datetime.datetime'>                 #这里能够看到刚才定义的str为这种类型的变量

最后再把上面这两个函数结合起来完整的完成字符串到时间的转换:
>>> import time,datetime                       #首先导入两个使用到的模块
>>> string = '2009-12-09'
>>> string = time.strptime(string,'%Y-%m-%d') #首先把字符串使用strptime()返回一个时间元素构成的元组
>>> y, m, d = string[0:3]                      #把获得的时间元组前三个元素赋值给三个变量(也就是年月日)
>>> string = datetime.datetime(y, m, d)        #最后使用datetime把刚才获得的时间变量转为正式的时间格式变量
   >>> print string
2009-12-09 00:00:00                            #至此,能够说完成了字符串到时间的转换(注意是变量类型转换的过程)
Python字符串各类操做处理的内置方法详细解释以下: 

str='test Word tt'


生成字符串变量str='test Word tt'
 
字符串长度获取:len(str)
例:print '%s length=%d' % (str,len(str))
 
字母处理
所有大写:str.upper()
所有小写:str.lower()
大小写互换:str.swapcase()
首字母大写,其他小写:str.capitalize()
首字母大写:str.title()
例:
print '%s lower=%s' % (str,str.lower())
print '%s upper=%s' % (str,str.upper())
print '%s swapcase=%s' % (str,str.swapcase())
print '%s capitalize=%s' % (str,str.capitalize())
print '%s title=%s' % (str,str.title())
 

格式化相关
获取固定长度,右对齐,左边不够用空格补齐:str.ljust(width)
获取固定长度,左对齐,右边不够用空格补齐:str.ljust(width)
获取固定长度,中间对齐,两边不够用空格补齐:str.ljust(width)
获取固定长度,右对齐,左边不足用0补齐
例:
print '%s ljust=%s' % (str,str.ljust(20))
print '%s rjust=%s' % (str,str.rjust(20))
print '%s center=%s' % (str,str.center(20))
print '%s zfill=%s' % (str,str.zfill(20))


字符串搜索相关
搜索指定字符串,没有返回-1:str.find('t')
指定起始位置搜索:str.find('t',start)
指定起始及结束位置搜索:str.find('t',start,end)
从右边开始查找:str.rfind('t')
搜索到多少个指定字符串:str.count('t')
上面全部方法均可用index代替,不一样的是使用index查找不到会抛异常,而find返回-1
例:
print '%s find nono=%d' % (str,str.find('nono'))
print '%s find t=%d' % (str,str.find('t'))
print '%s find t from %d=%d' % (str,1,str.find('t',1))
print '%s find t from %d to %d=%d' % (str,1,2,str.find('t',1,2))
#print '%s index nono ' % (str,str.index('nono',1,2))
print '%s rfind t=%d' % (str,str.rfind('t'))
print '%s count t=%d' % (str,str.count('t'))


字符串替换相关
替换old为new:str.replace('old','new')
替换指定次数的old为new:str.replace('old','new',maxReplaceTimes)
例:
print '%s replace t to *=%s' % (str,str.replace('t', '*'))
print '%s replace t to *=%s' % (str,str.replace('t', '*',1))


字符串去空格及去指定字符
去两边空格:str.strip()
去左空格:str.lstrip()
去右空格:str.rstrip()
去两边字符串:str.strip('d'),相应的也有lstrip,rstrip
例:
str=' test Word '
print '%s strip=%s' % (str,str.strip())
str='test Word'
print '%s strip=%s' % (str,str.strip('d'))


按指定字符分割字符串为数组:str.split(' ')
默认按空格分隔
例:
str='a b c de'
print '%s strip=%s' % (str,str.split())
str='a-b-c-de'
print '%s strip=%s' % (str,str.split('-'))


字符串判断相关是否以start开头:str.startswith('start')是否以end结尾:str.endswith('end')是否全为字母或数字:str.isalnum()是否全字母:str.isalpha()是否全数字:str.isdigit()是否全小写:str.islower()是否全大写:str.isupper()例:str='test Word'print '%s startwith t=%s' % (str,str.startswith('t'))print '%s endwith d=%s' % (str,str.endswith('d'))print '%s isalnum=%s' % (str,str.isalnum())str='testWord'print '%s isalnum=%s' % (str,str.isalnum())print '%s isalpha=%s' % (str,str.isalpha())print '%s isupper=%s' % (str,str.isupper())print '%s islower=%s' % (str,str.islower())print '%s isdigit=%s' % (str,str.isdigit())str='3423'print '%s isdigit=%s' % (str,str.isdigit())