3.字元型 字元型常見的方法如下所示: capitalize():字元串第一個英文單詞首字母大寫 title():如字元串有多個英文單詞,則每個單詞首字母大寫 split():對字元串指定的分隔符進行拆分,預設為空格符 find():返回匹配到的字元第一次出現的位置索引,找不到返回 1 replac ...
3.字元型
字元型常見的方法如下所示:
- capitalize():字元串第一個英文單詞首字母大寫
- title():如字元串有多個英文單詞,則每個單詞首字母大寫
- split():對字元串指定的分隔符進行拆分,預設為空格符
- find():返回匹配到的字元第一次出現的位置索引,找不到返回 -1
- replace(old, new):對字元串指定的字元進行替換
- strip():刪除指定的字元
- len():獲取字元串長度
- +:常用於字元拼接
- *:用於複製字元
- str():將其他類型數據轉換為字元型
- upper():將字元轉換為大寫
- lower():將字元轉換為小寫
3.1 常用方法示例
a=" i love china "
print(f"字元串僅第一個單詞首字母大寫:{a.capitalize()}")
print(f"字元串僅每個單詞首字母大寫:{a.title()}")
print(f"對字元串進行拆分:{a.split()}")
print(f"對字元串進行查找:{a.find('i')}")
print(f"對字元串進行替換:{a.replace('i','H')}")
print(f"刪除指定的字元:{a.strip('i')}")
print(f"獲取字元串長度:{len(a)}")
print(f"字元串拼接:{a+' hello '}")
print(f"字元串複製:{a*3}")
print(f"將其他類型轉換為字元:{str(123)},{type(str(123))}")
輸出結果如下所示:
字元串僅第一個單詞首字母大寫: i love china
字元串僅每個單詞首字母大寫: I Love China
對字元串進行拆分:['i', 'love', 'china']
對字元串進行查找:1
對字元串進行替換: H love chHna
刪除指定的字元: i love china
獲取字元串長度:14
字元串拼接: i love china hello
字元串複製: i love china i love china i love china
將其他類型轉換為字元:123,<class 'str'>
3.2 字元索引和切片
a=" i love china "
print(f"獲取第3個字元:{a[3]}")
print(f"獲取單詞love:{a[3:8]}")
print(f"對字元串進行倒序輸出:{a[::-1]}")
輸出結果如下所示:
獲取第3個字元:l
獲取單詞love:love
#### 對字元串進行倒序輸出: anihc evol i
3.3 字元串其他方法
獲取字元串其他的方法和使用方法,可以使用
dir(str)
或
help(str)
3.4 字元串格式化
字元中格式化主要指對輸出的字元串進行統一歸化處理。Python提供很多字元串格式化方式,常見分別是%-formating、str.format()、f-string、模板字元串。
f-string,如果要使用這種字元串格式化,Python版本必須大於3.6版本
3.4.1 %-formating
這是一種C風格的字元串格式化,有時也稱為舊式字元串格式化,示例如下所示:
>>> name="Surpass"
>>> "Hello %s " % name
'Hello Surpass '
%s格式說明將被替換的字元為字元串的,在這種舊式風格方式中,還可以用於控制輸出字元串的格式說明符,例如可以將數字轉換為其他進位或填充空格生成特定格式的表格或報告,如下所示:
>>> name="Surpass"
>>> errorCode=123456
>>> "Hello %s ,there is a 0x%x error" % (name,errorCode)
'Hello Surpass ,there is a 0x1e240 error'
3.4.2 str.format()
在Python3引入的一種新的字元串格式化方式。這種方法可以免去%操作這種特殊語法,使得字元格式化的語法更加規整,需要在字元串對象上調用format()函數。示例如下所示:
>>> name="Surpass"
>>> "Hello {}".format(name)
'Hello Surpass'
另外一種表現形式如下所示:
>>> name="Surpass"
>>> errorCode=123456
>>> "Hello {name} ,there is a 0x%{errorCode:x}".format(name=name,errorCode=errorCode)
'Hello Surpass ,there is a 0x%1e240'
3.4.3 f-string
str.format()這種字元串格式化非常強大,也沒有額外增加複雜性。但在Python 3.6 之後增加另外一個字元串格式方法,稱f-string(formatted string literal)。使用這種方法,可以在字元串常量內使用嵌入的Python表達式,這也是我個人的最愛,後面使用這種方式格式化字元串非常多,示例如下所示:
>>> name="Surpass"
>>> errorCode=123456
>>> f"Hello {name} ,there is a {errorCode:#x}"
'Hello Surpass ,there is a 0x1e240'
>>> f"test add {sum((1,2,3,4,5))} bool test {True if 2>3 else False}"
'test add 15 bool test False'
3.4.4 模板字元串
Python中的另一種字元串格式化是模板字元串(template string)。這種機制相對簡單,但也不太強大,可能會在某些情況中使用。示例如下所示:
from string import Template
>>> name="surpass"
>>> t=Template("Hello,$name")
>>> t.substitute(name=name)
'Hello,surpass'
模板字元串不能使用格式說明符。因此,為了讓前面的錯誤提示代碼正常,需要手動將int轉換為十六進位,示例如下所示:
from string import Template
>>> name="Surpass"
>>> erroeCode=123456
>>> tempateString="Hello $name ,there is a $errorCode"
>>> Template(tempateString).substitute(name=name,errorCode=hex(errorCode))
'Hello Surpass ,there is a 0x1e240'
模板字元串通常用於處理用戶輸入生成的格式字元串,使用這種方式比較安全。
3.4.5 字元串格式如何選擇
Python提供這麼多的字元串格式方法,該如何選擇了?可以遵循以下原則
如果字元串由用戶提供,使用模板字元串來避免安全問題。如果不是,再考慮版本,Python 3.6 + 則使用f-string,否則使用str.format()
3.5 引號區別
在Python,字元串可以使用單引號、雙引號和三引號表示,那這三者有什麼區別?從字面的意思來看,三者沒有任何區別,主要在是使用場景不一樣。
-
單引號、雙引號:兩者沒什麼區別,不像其他語言如Java/C#、單引號表示字元型,雙引號表示字元串,在Python全部按字元串處理
-
三引號一般書寫形式為"""""",主要針對字元串非常長的情況,它允許字元串跨越多行,字元串也可以包含換行符、製表符及其他特殊字元等等。
-
需要特別註意是,三種引號不能嵌套自身,如果要進行嵌套需要進行轉義,如下所示:
a="a \"" # 正確
a="a "" # 報錯
File "<ipython-input-1-8b21a118cfbc>", line 1
a="a ""
本文同步在微信訂閱號上發佈,如各位小伙伴們喜歡我的文章,也可以關註我的微信訂閱號:woaitest,或掃描下麵的二維碼添加關註: