使用字符串

  • 基本操做
全部标准的序列操做(索引、分片、乘法、判断成员资格、求长度、取最小值、最大值)都适用与字符串,字符串不容许改变

  • 字符串方法

  • find() 
在一个字符串中查找子字符串,它返回子串中所在位置左端索引,若是找到返回-1
格式:
.find(self,sub,__start,__end)
s = 'great,beautiful,contry,Python'
print s.find('bea')     #返回6,表示第6个索引位置起找到了
print s.find('cc')      
print s.find('python')  #未发现返回-1
print 'bea'in(s)        #in也判断有没有,返回的是布尔值,


#指定起点和终点搜索范围的,可是范围包括_start,但不包括_end(Python中通常都这样)
print s.find('bea',3)      
print s.find('bea',3,7)
print s.find('bea',3,8)
print s.find('bea',3,10)

#输出
6
-1
-1
6
注:
字符串中的 find 方法并非返回布尔值,如返回0,则表示索引0位置

  • join() 
join()方法是很是重要的字符串方法,它是split()的逆方法,用于链接序列中的元素, 注意,被链接的元素必须都是字符串
# seq = [1,2,3]
# sqe = '+'
# sqe.join(seq)   #join()只能用于字符串的链接,因此报错

a =['1','2','3']
b ='+'
print b.join(a)
#输出
1+2+3

  • lower()
lower()方法返回字符串小写字母版
name = 'a'
names = ('A','B','C')   #列表没法直接使用 lower()方法,这里用str()转化为字符串
names = str(names)
if(name in names.lower()):
    print 'fount it'

name = 'A'
names = ('a','b','c')
if(name.lower() in names):
    print 'fount it'

#输出
#上述二者都输出“found it”

  • title()
会讲字符串转换为标题--也就是全部的单词的首字母大写,而其余字母小写
print "that's all folks".title()
#输出
That'S All Folks      #有点问题,那个s不该该大写


#还可使用 string 模块中的 capword()函数
import string         
print string.capwords("that's all folks")

  • replace()
replace() 方法返回某个字符串的全部匹配项均被替换以后获得的字符串
print "that's all folks".replace('all','a')  #第一个参数是要被替代的字符,第二个新字符
#输出
that's a folks

  • split()
split分隔,join的逆方法,将字符串分割成序列
若是不提供任何的分隔符,那么程序会把全部的空格做为分隔符(空格、制表、换行等)
print '1+2+3+4+5'.split('+')
print '/usr/bin/env'.split('/')
#输出
['1', '2', '3', '4', '5']
['', 'usr', 'bin', 'env']
string.rsplit([sep[,maxsplit ]]) 同split,可是在使用maxsplit是从右向左进行计数
string.split([sep[,maxsplit ]]) 返回字符串中全部单词的列表,使用 sep 做为分隔符(若是未特别指出以空格切分单词),可以使用 maxsplit 指定最大切分数

  • strip()
strip() 方法返回去除两侧(不包括内部)空格或者指定的字符
它和 lower() 方法一块儿使用能够很方便的对比输入的和存储的值 
name = 'a '  # ' a '先后都有空格,因此结果为wrong,可使用 strip()去除两侧的空格
names = ('a','b','c')
names = str(names)
if(name.strip() in names.lower()):  # strip() 移除两侧的空格
    print 'fount it'
else:
    print 'wrong'


print "**that's **all*!* folks *!*  ***".strip('**! ')
#输出
that's **all*!* folks  #只会移除两侧的字符,内部的不会被移除
string.lstrip([chars]) 返回一个字符串副本,其中全部的chars(默认为空白字符、好比空格、tab和换行符)都被字符串开始去除
string.rstrip([chars]) 返回一个字符串副本,其中全部的chars(默认为空白字符,好比空格、tab和换行符)都被从字符串结束处去除

  • translate()
translate() 方法和 replace() 方法同样,能够替换字符串中的某些部分,可是和前者不一样的是,translate() 方法只处理单个字符,它的优点在于能够同时进行多个替换,有时效率比  replace() 效率高
常与 maketrans() 一块儿使用
# translate有一个可选的参数deletchars,表示指定须要删除的字符,
# 格式:.translate(self,table,deletchars)
# table:翻译表,经过 string 模块中 maketrans()方法而来
# deletechars:字符串中要过滤的字符列表


import string

s = 'abcdefg-1234567'
table = string.maketrans('', '')        # 没有映射,实际上就是按原始字符保留,看下面用到translate中时的效果
print s.translate(table)                # 输出abcdefg-1234567
print s.translate(table, 'abc123')      # 输出defg-4567 能够看到删除了字符abc123

#输出
abcdefg-1234567
defg-4567


# 下面再看有字符映射时的效果
table = string.maketrans('abc', 'ABC')  # 用于translate中时的效果以下
print s.translate(table)                # 输出ABCdefg-1234567 就是将abc映射为大写的ABC,前提是abc若是被保留下来了
print s.translate(table, 'ab123')       # 输出Cdefg-4567 先把s中的ab123去除了,
                                        # 而后在保留下来的字符中应用table中指定的字符映射关系映射:c -> C
相关文章
相关标签/搜索