疯狂Python讲义之变量和简单类型--深入使用字符串笔记4
目錄
1. 轉(zhuǎn)義字符
2. 字符串格式化
3. 序列相關(guān)方法
4. 大小寫相關(guān)方法
5. 查找、替換相關(guān)方法
6. 分割、連接方法
1. 轉(zhuǎn)義字符
在字符串中可以使用反斜線進(jìn)行轉(zhuǎn)義;如果字符串本身包含反斜線,則需要使用 “\\” 表示,“\\” 就是轉(zhuǎn)義字符。
s = 'Hello\n\world' print(s)2. 字符串格式化
Python 提供了“%”對(duì)各種類型的數(shù)據(jù)進(jìn)行格式化輸出
# 實(shí)例代碼 price = 123 print("The book's price is %s" % price)這行代碼中的print 函數(shù)包含三個(gè)部分,第一部分是格式化字符串(它相當(dāng)于字符串模板),該格式化字符串中包含一個(gè)“ %s ”占位符,它會(huì)被第三部分的變量或表達(dá)式的值代替; 第二部分固定使用“%”作為分隔符。
格式化字符串中的“ %s ”被稱為轉(zhuǎn)換說明符( Conversion Specifier ),其作用相當(dāng)于一個(gè)占位符, 它會(huì)被后面的變量或表達(dá)式的值代替。“ %s '’指定將變量或值使用str() 函數(shù)轉(zhuǎn)換為字符串。
如果格式化字符串中包含多個(gè)“ %s ”占位符,第三部分也應(yīng)該對(duì)應(yīng)地提供多個(gè)變量,并且使用圓括號(hào)將這些變量括起來.
?
在默認(rèn)情況下, 轉(zhuǎn)換出來的字符串總是右對(duì)齊的,不夠?qū)挾葧r(shí)左邊補(bǔ)充空格。Python 也允許在最小寬度之前添加一個(gè)標(biāo)志來改變這種行為, Python 支持如下標(biāo)志。
- : 指定左對(duì)齊。
- : 表示數(shù)值總要帶著符號(hào)(正數(shù)帶“+” ,負(fù)數(shù)帶“ _,, )。
- :表示不補(bǔ)充空格, 而是補(bǔ)充0 。
對(duì)于轉(zhuǎn)換浮點(diǎn)數(shù), Python 還允許指定小數(shù)點(diǎn)后的數(shù)字位數(shù):如果轉(zhuǎn)換的是字符串, Python 允許指定轉(zhuǎn)換后的字符串的最大字符數(shù)。這個(gè)標(biāo)志被稱為精度值,該精度值被放在最小寬度之后,中間用點(diǎn)( . )隔開。
price = 108 print("the book's price is %x" % price) user = "Charli" age = 8 # 格式化字符串有兩個(gè)占位符,第三部分提供2個(gè)變量 print("%s is a %s years old boy" % (user , age)) num = -28 print("num is: %6i" % num) print("num is: %6d" % num) print("num is: %6o" % num) print("num is: %6x" % num) print("num is: %6X" % num) print("num is: %6s" % num) num2 = 30 # 最小寬度為0,左邊補(bǔ)0 print("num2 is: %06d" % num2) # 最小寬度為6,左邊補(bǔ)0,總帶上符號(hào) print("num2 is: %+06d" % num2) # 最小寬度為6,右對(duì)齊 print("num2 is: %-6d" % num2) my_value = 3.001415926535 # 最小寬度為8,小數(shù)點(diǎn)后保留3位 print("my_value is: %8.3f" % my_value) # 最小寬度為8,小數(shù)點(diǎn)后保留3位,左邊補(bǔ)0 print("my_value is: %08.3f" % my_value) # 最小寬度為8,小數(shù)點(diǎn)后保留3位,左邊補(bǔ)0,始終帶符號(hào) print("my_value is: %+08.3f" % my_value) the_name = "Charlie" # 只保留3個(gè)字符 print("the name is: %.3s" % the_name) # 輸出Cha # 只保留2個(gè)字符,最小寬度10 print("the name is: %10.2s" % the_name)3. 序列相關(guān)方法
字符串本質(zhì)上就是由多個(gè)字符組成的,因此程序允許通過索引來操作字符。
Python 字符串直接在方括號(hào)( [])中使用索引即可獲取對(duì)應(yīng)的字符, 字符串中第一個(gè)字符的索引為0 、第二個(gè)字符的索引為1,后面各字符依此類推。此外, Python 也允許從后面開始計(jì)算索引,最后一個(gè)字符的索引為-1,倒數(shù)第二個(gè)字符的索引為-2······依此類推。
除可獲取單個(gè)字符之外,也可在方括號(hào)中使用范圍來獲取字符串的中間“一段”(被稱為子串)。
允許省略起始索引或結(jié)束索引。如果省略起始索引,相當(dāng)于從字符串開始處開始截取;如果省略結(jié)束索引,相當(dāng)于截取到字符串的結(jié)束處。
Python 字符串還支持用in 運(yùn)算符判斷是否包含某個(gè)子串。
如果要獲取字符串的長(zhǎng)度,則可調(diào)用Python 內(nèi)置的len()函
使用全局內(nèi)置的min()和max()函數(shù)獲取字符串中最小字符和最大字符
s = 'crazyit.org is very good' # 獲取s中索引2處的字符 print(s[2]) # 輸出a # 獲取s中從右邊開始,索引4處的字符 print(s[-4]) # 輸出g # 獲取s中從索引3處到索引5處(不包含)的子串 print(s[3: 5]) # 輸出zy # 獲取s中從索引3處到倒數(shù)第5個(gè)字符的子串 print(s[3: -5]) # 輸出zyit.org is very # 獲取s中從倒數(shù)第6個(gè)字符到倒數(shù)第3個(gè)字符的子串 print(s[-6: -3]) # 輸出y g # 獲取s中從索引5處到結(jié)束的子串 print(s[5: ]) # 輸出it.org is very good # 獲取s中從倒數(shù)第6個(gè)字符到結(jié)束的子串 print(s[-6: ]) # 輸出y good # 獲取s中從開始到索引5處的子串 print(s[: 5]) # 輸出crazy # 獲取s中從開始到倒數(shù)第6個(gè)字符的子串 print(s[: -6]) #輸出crazyit.org is ver # 判斷s是否包含'very'子串 print('very' in s) # True print('fkit' in s) # False # 輸出s的長(zhǎng)度 print(len(s)) # 24 # 輸出'test'的長(zhǎng)度 print(len('test')) # 4 # 輸出s字符串中最大的字符 print(max(s)) # z # 輸出s字符串中最大的字符 print(min(s)) # 空格4. 大小寫相關(guān)方法
Python 是“自帶文檔”的。此處需要讀者簡(jiǎn)單掌握兩個(gè)幫助函數(shù)。
- dir() : 列出指定類或模塊包含的全部?jī)?nèi)容(包括函數(shù)、方法、類、變量等)。
- help() : 查看某個(gè)函數(shù)或方法的幫助文檔。
?
a = 'our domain is crazyit.org' # 每個(gè)單詞首字母大寫 print(a.title()) # 每個(gè)單詞首字母小寫 print(a.lower()) # 每個(gè)單詞首字母大寫 print(a.upper())5. 刪除空白
str 還提供了如下常用的方法來刪除空白。
- strip () :? 刪除字符串前后的空白。
- lstrip() :?? 刪除字符串前面(左邊)的空白。
- rstrip () : 刪除字符串后面(右邊)的空白。
需要說明的是, Python 的str 是不可變的(不可變的意思是指,字符串一旦形成,它所包含的字符序列就不能發(fā)生任何改變),因此這三個(gè)方法只是返回字符串前面或后面空白被刪除之后的副本, 并沒有真正改變字符串本身。
lstrip () 方法默認(rèn)刪除字符串左邊的空白,但如果為該方法傳入指定參數(shù),則可刪除該字符串左邊的指定字符。
s = ' this is a puppy ' # 刪除左邊的空白 print(s.lstrip()) # 刪除右邊的空白 print(s.rstrip()) # 刪除兩邊的空白 print(s.strip()) # 再次輸出s,將會(huì)看到s并沒有改變 print(s) s2 = 'i think it is a scarecrow' # 刪除左邊的i、t、o、w字符 print(s2.lstrip('itow')) # 刪除右邊的i、t、o、w字符 print(s2.rstrip('itow')) # 刪除兩邊的i、t、o、w字符 print(s2.strip('itow'))5. 查找、替換相關(guān)方法
str 還提供了如下常用的執(zhí)行查找、替換等操作的方法。
- startswith():判斷字符串是否以指定子串開頭。
- ?endswith ():判斷字符串是否以指定子串結(jié)尾。
- find (): 查找指定子串在字符串中出現(xiàn)的位置,如果沒有找到指定子串,則返回- I 。
- index () : 查找指定子串在字符串中出現(xiàn)的位置,如果沒有找到指定子串,則引發(fā)ValueError錯(cuò)誤。
- replace(): 使用指定子串替換字符串中的目標(biāo)子串。
- translate (): 使用指定的翻譯映射表對(duì)字符串執(zhí)行替換。
從上面程序可以看出, str 的trans l a te ()方法需要根據(jù)翻譯映射表對(duì)字符串進(jìn)行查找、替換。在上面程序中我們自己定義了一個(gè)翻譯映射表,這種方式需要開發(fā)者能記住所有字符的編碼,這顯然不太可能。為此, Pyth on 為由類提供了一個(gè)maketra ns()方法,通過該方法可以非常方便地創(chuàng)建翻譯映射表。
假如定義a -> 1 、b ->2、c->3 的映射, 程序只要將需要映射的所有字符作為maketrans () 方法的第一個(gè)參數(shù),將所有映射的目標(biāo)字符作為maketrans () 方法的第二個(gè)參數(shù)即可。?
6. 分割、連接方法
Python 還為str 提供了分割和連接方法。
- split(): 將字符串按指定分割符分割成多個(gè)短語(yǔ)。
- join ():將多個(gè)短語(yǔ)連接成字符串。
str 的split()和join () 方法互為逆操作一 split () 方法用于將字符串分割成多個(gè)短語(yǔ):而join () 方法則用于將多個(gè)短語(yǔ)連接成字符串。
s = 'crazyit.org is a good site' # 使用空白對(duì)字符串進(jìn)行分割 print(s.split()) # 輸出 ['crazyit.org', 'is', 'a', 'good', 'site'] # 使用空白對(duì)字符串進(jìn)行分割,最多只分割前2個(gè)單詞 print(s.split(None, 2)) # 輸出 ['crazyit.org', 'is', 'a good site'] # 使用點(diǎn)進(jìn)行分割 print(s.split('.')) # 輸出 ['crazyit', 'org is a good site'] mylist = s.split() # 使用'/'為分割符,將mylist連接成字符串 print('/'.join(mylist)) # 輸出 crazyit.org/is/a/good/site # 使用','為分割符,將mylist連接成字符串 print(','.join(mylist)) # 輸出 crazyit.org,is,a,good,site?
?
總結(jié)
以上是生活随笔為你收集整理的疯狂Python讲义之变量和简单类型--深入使用字符串笔记4的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 缅怀消逝的紫薇村
- 下一篇: 大漠找图算法_GitHub - jozh