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 ""
本文地址:https://www.cnblogs.com/surpassme/p/12927540.html
本文同步在微信訂閱號上發布,如各位小伙伴們喜歡我的文章,也可以關注我的微信訂閱號:woaitest,或掃描下面的二維碼添加關注:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/144258.html
標籤:Python
上一篇:Python基礎-02資料型別
