全部標準的序列操做(索引、分片、乘法、判斷成員資格、求長度、取最小值、最大值)都適用與字符串,字符串不容許改變
在一個字符串中查找子字符串,它返回子串中所在位置左端索引,若是找到返回-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