全部标准的序列操做(索引、分片、乘法、判断成员资格、求长度、取最小值、最大值)都适用与字符串,字符串不容许改变
在一个字符串中查找子字符串,它返回子串中所在位置左端索引,若是找到返回-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()方法是很是重要的字符串方法,它是split()的逆方法,用于链接序列中的元素,
注意,被链接的元素必须都是字符串
# seq = [1,2,3]
# sqe = '+'
# sqe.join(seq) #join()只能用于字符串的链接,因此报错
a =['1','2','3']
b ='+'
print b.join(a)
#输出
1+2+3
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”
会讲字符串转换为标题--也就是全部的单词的首字母大写,而其余字母小写
print "that's all folks".title()
#输出
That'S All Folks #有点问题,那个s不该该大写
#还可使用 string 模块中的 capword()函数
import string
print string.capwords("that's all folks")
replace() 方法返回某个字符串的全部匹配项均被替换以后获得的字符串
print "that's all folks".replace('all','a') #第一个参数是要被替代的字符,第二个新字符
#输出
that's a folks
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() 方法返回去除两侧(不包括内部)空格或者指定的字符
它和 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() 方法和 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