2017-11-08 13:38:26 1514瀏覽
String字符串是Python中最常用的數(shù)據(jù)類型了,Python不支持單字符類型,所以單字符在Python中也作為字符串。
書寫一個(gè)string:
#推薦先復(fù)制到pycharm執(zhí)行代碼
str_single_quotes = '斯人若彩虹,遇上方知有.'#用單引號(hào)
str_double_quotes = "斯人若彩虹,遇上方知有."#雙引號(hào)
str_triple_quoted = '''斯人若彩虹,遇上方知有.'''#三個(gè)引號(hào)
print(str_single_quotes,str_double_quotes,str_triple_quoted,sep ='\n')
#如果在字符串中用到引號(hào),可以這樣處理
s1 = 'allows embedded "double" quotes'#單引號(hào)與雙引號(hào)套用
s2 = "allows embedded 'single' quotes"
s3 = 'can use \'\\\''#用\表示轉(zhuǎn)義,也是最常用的方法
print(s1,s2,s3,sep = '\n')#一句string中用到多行輸入可以這樣處理
s_r1 = '''the first line
the second line'''the second line'''#三個(gè)引號(hào)的string支持多行內(nèi)容
s_r2 = 'the first line\nthe second line'#用到\n作為轉(zhuǎn)義后換行符
print(s_r1,s_r2,sep ='\n')
string的基礎(chǔ)操作:
#請(qǐng)先執(zhí)行看結(jié)果
str1 = '斯人若彩虹'
str2 = '遇上方知有'
str3 = '斯人'
print(str3 in str1) #in返回bool值,判斷前一個(gè)str是否在后一個(gè)str中
print(str1+','+str2) #+號(hào)連接兩個(gè)string
print(str1*2) #*一個(gè)整數(shù)可以把string翻倍的效果
print(str1>str2) #<, >符號(hào)可以進(jìn)行字符串比較
#至于這個(gè)大小怎么比較的,簡(jiǎn)單說(shuō)一下,可以自己了解print(ord(str1[0]),ord(str2[0]))
#從0位置開(kāi)始往后比較,通過(guò)內(nèi)置函數(shù)ord()獲得每個(gè)字符的編碼進(jìn)行大小比較,先停止迭代的小#也就是前面都一樣的話,短的那個(gè)string小
string的下標(biāo)操作:
#請(qǐng)先執(zhí)行看結(jié)果#
首先要知道Python內(nèi)置函數(shù)len(),可返回對(duì)象的長(zhǎng)度
s = '斯人若彩虹,遇上方知有.'print(len(s)) #12#
其次要知道,string是序列,可迭代,也就是說(shuō)string可以用for遍歷,也有下標(biāo)操作# 斯| 人 | 若| 彩| 虹| , | 遇 | 上| 方| 知| 有|.
# 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9| 10| 11
#-12|-11|-10|-9 |-8 |-7 |-6 |-5 |-4 |-3|-2 | -1s_l1 = s[3:5] #注意區(qū)間的左閉右開(kāi),也就是獲取s[3]s[4],s[5]不包括
s_l2 = s[-4:-1] #注意從左向右,下標(biāo)從0開(kāi)始,從右向左,下表從-1開(kāi)始
s_l3 = s[:6] #左面可省略開(kāi)始位置,默認(rèn)為0開(kāi)始
s_l4 = s[-6:] #右面可省略結(jié)束位置,默認(rèn)是以len(string)
s_l5 = s[:] #知道了前后可省略,我們便可以這樣表示整個(gè)string
s_l6 = s[::2] #除了開(kāi)始和結(jié)束,還有第三個(gè)參數(shù)叫步長(zhǎng),默認(rèn)是1
s_l7 = s[::-1] #知道了步長(zhǎng),我們便可以最簡(jiǎn)單的方式反轉(zhuǎn)這個(gè)
stringprint(s_l1,s_l2,s_l3,s_l4,s_l5,s_l6,s_l7,sep='\n')
string常用的操作:
#請(qǐng)先執(zhí)行看結(jié)果
#為了方便處理#把demo換成英文版:but every once in a while when you meet someone,nothing will compare.sE = 'but every once in a while when you meet someone,nothing will compare.'s_length = len(sE) #len()返回string長(zhǎng)度
print(s_length)
s_lst = sE.split(',') #split()按照指定字符進(jìn)行分割,默認(rèn)返回?cái)?shù)組
print(s_lst) #如果發(fā)現(xiàn)結(jié)果和預(yù)期不一樣,注意一下是否是中英文的符號(hào)問(wèn)題
s_join = '@'.join(s_lst) #join(),注意這個(gè)使用的形式,按照前面指定字符進(jìn)行鏈接
print(s_join)
s_lst1 = sE.split() #默認(rèn)按照空格分割
print(s_lst1)
s_join1 = '@'.join(s_lst1)
print(s_join1)
sE_tmp = '\t'+sE+'\n'
sE_r1 = sE_tmp.strip() #strip是去掉string前后的空白符如'\n','\t',空格
sE_r2 = sE_tmp.rstrip() #去最掉右端的
sE_r3 = sE_tmp.lstrip() #去最掉左端的
#strip可用于...比如讀取文本后去掉每一行結(jié)束的換行符
print(sE,sE_tmp,sE_r1,sE_r2,sE_r3,sep = '\n')
s_times1 = sE.count('e') #count返回目標(biāo)字符在string中出現(xiàn)的次數(shù)
s_times2 = sE.count('e',4,9) #后面兩個(gè)參數(shù)是指定范圍,默認(rèn)是[0,len(string))
print('e:',s_times1)
print('e in every:',s_times2)
s_replace1 = sE.replace('e','E') #把string中第一個(gè)字符參數(shù)處替換為第二個(gè)參數(shù)
s_replace2 = sE.replace('e','E',4) #第三個(gè)參數(shù)是指定替換不超過(guò)該次數(shù)
print(sE,s_replace1,s_replace2,sep='\n')
#從sE不變可以看出Python中string的不可變
#凡是對(duì)string本身進(jìn)行變化的操作都會(huì)返回一個(gè)變化后的副本,而非直接更改原string,這一點(diǎn)還是要多注意的
s_f = s_lst[1]
s_f1 = s_f.capitalize() #string的第一個(gè)字符大寫
s_f2 = s_f.upper() #string所有字母大寫
s_f3 = s_f2.lower() #string所有字母小寫
s_f4 = s_f.title() #string每個(gè)單詞首字母大寫
s_f5 = s_f.swapcase() #string中大寫變小寫,小寫變大寫
print(s_f,s_f1,s_f2,s_f3,s_f4,sep='\n')
#python新特性里面給了一個(gè)casefold()操作
#文檔里的demo
# s = '?'
# s.lower() # '?'
# s.casefold() # 'ss'
#emmm...lower適應(yīng)ASCII,casefold也支持Unicode
#處理英文字母用lower就夠了,其他可自行了解
print(s_f.isalpha()) #至少一個(gè)字符且全是字母
print(s_f.isalnum()) #至少一個(gè)字符且全為字母或數(shù)字
print(s_f.isdigit()) #至少一個(gè)字符且為數(shù)字
print(s_f.islower()) #至少含有一個(gè)區(qū)分大小寫的字符,且是這些字符都是小寫
print(s_f.isupper()) #至少含有一個(gè)區(qū)分大小寫的字符,且是這些字符都是大寫
print(s_f.isspace()) #是否只含有空格
#通常這些判斷對(duì)string中目標(biāo)的字符或部分進(jìn)行使用,如
s_demo = 'a1 b2 c3'
for i in s_demo: #字符串可迭代
if(i.isdigit()): #判斷字符類型
print(i,end='') #輸出目標(biāo)字符
print(s_f.find('com')) #找到目標(biāo)則返回其開(kāi)始的下標(biāo)
print(s_f.find('@')) #找不到目標(biāo)則返回-1
#與find方法類似的還有index,區(qū)別是index找不到目標(biāo)的話會(huì)返回一個(gè)異常,也就是錯(cuò)誤提示
#一般只是判斷存在與否的話,推薦使用關(guān)鍵字 in
print(s_f.endswith('compare')) #判斷是否以目標(biāo)字符串結(jié)尾
print(s_f.startswith('nothing')) #判斷是否以目標(biāo)字符串開(kāi)始
#整理了寫很常用的方法吧,還有其他的方法大家可以自行看一些文檔
數(shù)字格式輸出描述
3.1415926{:.2f}3.14保留小數(shù)點(diǎn)后兩位
3.1415926{:+.2f}+3.14帶符號(hào)保留小數(shù)點(diǎn)后兩位
-1{:+.2f}-1.00帶符號(hào)保留小數(shù)點(diǎn)后兩位
2.71828{:.0f}3不帶小數(shù)
5{:0>2d}05數(shù)字補(bǔ)零 (填充左邊, 寬度為2)
5{:x<4d}5xxx數(shù)字補(bǔ)x (填充右邊, 寬度為4)
10{:x<4d}10xx數(shù)字補(bǔ)x (填充右邊, 寬度為4)
1000000{:,}1,000,000以逗號(hào)分隔的數(shù)字格式
0.25{:.2%}25.00%百分比格式
1000000000{:.2e}1.00e+09指數(shù)記法
13{:10d}13右對(duì)齊 (默認(rèn), 寬度為10)
13{:<10d}13左對(duì)齊 (寬度為10)
13{:^10d}13中間對(duì)齊 (寬度為10)
以上就是扣丁課堂解讀Python基礎(chǔ)教程視頻之String字符串的詳細(xì)介紹。當(dāng)然參加我們的Python培訓(xùn)課程,可以更快速、系統(tǒng)全面的掌握Python從入門到精通知識(shí)。最后也歡迎大家在課程評(píng)論區(qū)指出不足的地方。我們會(huì)慢慢改進(jìn)的,想要了解更多請(qǐng)關(guān)注扣丁學(xué)堂python培訓(xùn)官網(wǎng),另有專業(yè)的老師和與時(shí)俱進(jìn)的課程體系定會(huì)讓你學(xué)有所成,助你實(shí)現(xiàn)高薪夢(mèng)想,最好關(guān)注扣丁學(xué)堂的官網(wǎng),大量的python視頻教程供學(xué)員觀看學(xué)習(xí),喜歡就快行動(dòng)吧。
查看更多關(guān)于“Python開(kāi)發(fā)資訊”的相關(guān)文章>>