按索引取值
字符串是不可變類型,並不能改變字符串的值
最多可以有三個參數,分別是起始位置,結束為止和步長,可以正向取值,反向取值(起始位置大於結束位置或者沒有起始位置與結束位置,步長為-1表示從最后一個開始,步長為負數)
hobbies = "music basketball" print(hobbies[0]) print(hobbies[1]) print(hobbies[5]) print(hobbies[0:5]) print(hobbies[:5]) print(hobbies[0:5:2]) print(hobbies[0:5:-2]) print(hobbies[11:5:-2]) print(hobbies[-1]) print(hobbies[-2])
輸出

/usr/local/bin/python3.6 /Users/albert/Desktop/6。2/01字符串的操作.py m u * music music msc * tka l l * # *表示空格輸出
長度運算
print(len('name')) # 4
成員運算
print('a' in 'Albert') #False print('a' in not 'Albert') # True
移除空白strip
print(' name'.lstrip()) # 移除左邊空白 print('name '.rstrip()) # 移除右邊空白 print(' name '.strip()) # 移除兩邊空白 #name #name #name
切分split
print('n a me'.split(',')) print('n,a me'.split(',')) print('n,/a /me'.split('/',1)) # 數字表示切割次數,默認全部切割 print('n,a /me'.split('/')) print('a|b|c'.rsplit('|',1)) # 從右邊開始切割 # ['n a me'] # ['n', 'a me'] # ['n,', 'a /me'] # ['n,a ', 'me'] # ['a|b', 'c']
組合join
print('a'.join('1234')) print('a'.join('bcde')) tag = ' ' print(tag.join(['I', 'say', 'hello', 'world'])) # 可迭代對象必須都是字符串 # 1a2a3a4 # bacadae # I say hello world
替換replace
print('abc name id'.replace('a', 'card')) name = 'albert say :i have a dream,my name is albert' print(name.replace('albert', 'Albert', 1)) # 注意此時name原來的值並沒有改變,而是產生了一個替換之后新的值 # cardbc ncardme id # Albert say :i have a dream,my name is albert
formate的三種用法
#formate 基本用法 res = '{} {} {}'.format('Albert', 18, 'male') # 相當於%s,其占位符的作用 print(res) res = '{1} {0} {1}'.format('Albert', 18, 'male') # 按照索引對應值,與索引序列相關 print(res) res = '{name} {age} {sex}'.format(sex='male', name='Albert', age=18) # 按照關鍵字對應值,只與key對應 print(res) # Albert18 male # 18 Albert 18 # Albert 18 male
formate 高級用法
字符串其他操作
#find,rfind,index,rindex,count name='albert say hello' print(name.find('o',1,3)) #顧頭不顧尾,找不到則返回-1不會報錯,找到了則顯示索引 # print(name.index('e',2,4)) #同上,但是找不到會報錯 print(name.count('e',1,3)) #顧頭不顧尾,如果不指定范圍則查找所有 #center,ljust,rjust,zfill name='albert' print(name.center(30,'-')) print(name.ljust(30,'*')) print(name.rjust(30,'*')) print(name.zfill(50)) #用0填充 #expandtabs name='albert\thello' print(name) print(name.expandtabs(1)) #captalize,swapcase,title print(name.capitalize()) #首字母大寫 print(name.swapcase()) #大小寫翻轉 msg='albert say hi' print(msg.title()) #每個單詞的首字母大寫 #is數字系列 #在python3中 num1=b'4' #bytes num2=u'4' #unicode,python3中無需加u就是unicode num3='四' #中文數字 num4='Ⅳ' #羅馬數字 #isdigt:bytes,unicode print(num1.isdigit()) #True print(num2.isdigit()) #True print(num3.isdigit()) #False print(num4.isdigit()) #False #isdecimal:uncicode #bytes類型無isdecimal方法 print(num2.isdecimal()) #True print(num3.isdecimal()) #False print(num4.isdecimal()) #False #isnumberic:unicode,中文數字,羅馬數字 #bytes類型無isnumberic方法 print(num2.isnumeric()) #True print(num3.isnumeric()) #True print(num4.isnumeric()) #True #三者不能判斷浮點數 num5='4.3' print(num5.isdigit()) print(num5.isdecimal()) print(num5.isnumeric()) ''' 總結: 最常用的是isdigit,可以判斷bytes和unicode類型,這也是最常見的數字應用場景 如果要判斷中文數字或羅馬數字,則需要用到isnumeric ''' #is其他 print('===>') name='alb123ert' print(name.isalnum()) #字符串由字母或數字組成 print(name.isalpha()) #字符串只由字母組成 print(name.isidentifier()) print(name.islower()) print(name.isupper()) print(name.isspace()) print(name.istitle())
字符串常用方法查詢
序號 | 方法及描述 |
---|---|
1 | capitalize() |
2 | 返回一個指定的寬度 width 居中的字符串,fillchar 為填充的字符,默認為空格。 |
3 | count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出現的次數,如果 beg 或者 end 指定則返回指定范圍內 str 出現的次數 |
4 | bytes.decode(encoding="utf-8", errors="strict") Python3 中沒有 decode 方法,但我們可以使用 bytes 對象的 decode() 方法來解碼給定的 bytes 對象,這個 bytes 對象可以由 str.encode() 來編碼返回。 |
5 | encode(encoding='UTF-8',errors='strict') 以 encoding 指定的編碼格式編碼字符串,如果出錯默認報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace' |
6 | endswith(suffix, beg=0, end=len(string)) |
7 | 把字符串 string 中的 tab 符號轉為空格,tab 符號默認的空格數是 8 。 |
8 | find(str, beg=0 end=len(string)) 檢測 str 是否包含在字符串中,如果指定范圍 beg 和 end ,則檢查是否包含在指定范圍內,如果包含返回開始的索引值,否則返回-1 |
9 | index(str, beg=0, end=len(string)) 跟find()方法一樣,只不過如果str不在字符串中會報一個異常. |
10 | 如果字符串至少有一個字符並且所有字符都是字母或數字則返 回 True,否則返回 False |
11 | 如果字符串至少有一個字符並且所有字符都是字母則返回 True, 否則返回 False |
12 | 如果字符串只包含數字則返回 True 否則返回 False.. |
13 | 如果字符串中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是小寫,則返回 True,否則返回 False |
14 | 如果字符串中只包含數字字符,則返回 True,否則返回 False |
15 | 如果字符串中只包含空白,則返回 True,否則返回 False. |
16 | 如果字符串是標題化的(見 title())則返回 True,否則返回 False |
17 | 如果字符串中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是大寫,則返回 True,否則返回 False |
18 | 以指定字符串作為分隔符,將 seq 中所有的元素(的字符串表示)合並為一個新的字符串 |
19 | 返回字符串長度 |
20 | 返回一個原字符串左對齊,並使用 fillchar 填充至長度 width 的新字符串,fillchar 默認為空格。 |
21 | 轉換字符串中所有大寫字符為小寫. |
22 | 截掉字符串左邊的空格或指定字符。 |
23 | 創建字符映射的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字符串,表示需要轉換的字符,第二個參數也是字符串表示轉換的目標。 |
24 | 返回字符串 str 中最大的字母。 |
25 | 返回字符串 str 中最小的字母。 |
26 | 把 將字符串中的 str1 替換成 str2,如果 max 指定,則替換不超過 max 次。 |
27 | rfind(str, beg=0,end=len(string)) 類似於 find()函數,不過是從右邊開始查找. |
28 | rindex( str, beg=0, end=len(string)) 類似於 index(),不過是從右邊開始. |
29 | 返回一個原字符串右對齊,並使用fillchar(默認空格)填充至長度 width 的新字符串 |
30 | 刪除字符串字符串末尾的空格. |
31 | split(str="", num=string.count(str)) num=string.count(str)) 以 str 為分隔符截取字符串,如果 num 有指定值,則僅截取 num 個子字符串 |
32 | 按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果參數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。 |
33 | startswith(str, beg=0,end=len(string)) 檢查字符串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定范圍內檢查。 |
34 | 在字符串上執行 lstrip()和 rstrip() |
35 | 將字符串中大寫轉換為小寫,小寫轉換為大寫 |
36 | 返回"標題化"的字符串,就是說所有單詞都是以大寫開始,其余字母均為小寫(見 istitle()) |
37 | translate(table, deletechars="") 根據 str 給出的表(包含 256 個字符)轉換 string 的字符, 要過濾掉的字符放到 deletechars 參數中 |
38 | 轉換字符串中的小寫字母為大寫 |
39 | 返回長度為 width 的字符串,原字符串右對齊,前面填充0 |
40 | 檢查字符串是否只包含十進制字符,如果是返回 true,否則返回 false。 |
查看Python中的其他數據類型及方法請點擊Python中的基本數據類型和使用方法