python基礎教程(第三版)學習筆記(三)
第三章 使用字串
3.1 字串基本操作
所有標準序列操作(索引、切片、乘法、成員資格檢查、長度、最小值和最大值)都適用於字串,但別忘了字串是不可變的,因此所有的元素賦值和切片賦值都是非法的。
3.2設定字串的格式
3.2.1%
使用字串格式設定運算子——百分號。這個運算子的行為類似於C語言中的經典函式printf:在%左邊指定一個字串(格式字串),並在右邊指定要設定其格式的值。指定要設定其格式的值時,可使用單個值(如字串或數字),可使用元組(如果要設定多個值的格式),還可使用字典(這事兒以後再說),其中最常見的是元組。
'''
hell='%s %s 你好!' name=("張","三") print(hell % name)
'''
張 三 你好!
------------------
(program exited with code: 0)
請按任意鍵繼續. . .
上述格式字串中的%s稱為轉換說明符,指出了要將值插入什麼地方。s意味著將值視為字串進行格式設定。如果指定的值不是字串,將使用str將其轉換為字串。其他說明符將導致其他形式的轉換。例如,%.3f將值的格式設定為包含3位小數的浮點數。
3.2.2模板字串
它使用類似於UNIX shell的語法,旨在簡化基本的格式設定機制,如下所示:
'''
from string import Template tmpl=Template("$zhang $san 你好!") strl=tmpl.substitute(zhang="張",san="三") print(strl)
'''
張 三 你好!
------------------
(program exited with code: 0)
請按任意鍵繼續. . .
包含等號的引數稱為關鍵字引數(以後說),在字串格式設定中,可將關鍵字引數視為一種向命名替換欄位提供值的方式。
3.2.3format方法
使用這種方法時,每個替換欄位都用花括號括起,其中可能包含名稱,還可能包含有關如何對相應的值進行轉換和格式設定的資訊。
1、無索引
在最簡單的情況下,替換欄位沒有名稱或將索引用作名稱。
'''
strin="{},{}和{}你們好!".format("張三","李四","王五") print(strin)
'''
張三,李四和王五你們好!
------------------
(program exited with code: 0)
請按任意鍵繼續. . .
2、有索引
無需像上面這樣按順序排列。
'''
stri="{2},{0}和{1}你們好!".format("張三","李四","王五")
print(stri)
'''
王五,張三和李四你們好!
------------------
(program exited with code: 0)
請按任意鍵繼續. . .
3、命名欄位
'''
string_="{zhangsan},{wangwu}和{lisi}你們好!".format(zhangsan="張三",lisi="李四",wangwu="王五")
print(string_)
'''
張三,王五和李四你們好!
------------------
(program exited with code: 0)
請按任意鍵繼續. . .
4、複合方式
結合格式說明符
'''
from math import pi
Π="{name}的值是{value}".format(value=pi,name="π")
print(Π)
'''
π的值是3.141592653589793
------------------
(program exited with code: 0)
請按任意鍵繼續. . .
'''
from math import pi
Π_="{name}的值是{value:.2f}".format(value=pi,name="π")
print(Π_)
'''
π的值是3.14
------------------
(program exited with code: 0)
請按任意鍵繼續. . .
這裡用.2f指定取小數點後i兩位的浮點數。
關於fomat方法的複合應用有很多,這裡僅舉一例。若有興趣或必要可以百度。
3.3 字串方法
3.3.1 center
通過在兩邊新增填充字元(預設為空格)讓字串居中。
格式:center(填充字元數,"填充的字元")
'''
con="李四".center(40,"&")
print(con)
'''
&&&&&&&&&&&&&&&&&&&李四&&&&&&&&&&&&&&&&&&&
------------------
(program exited with code: 0)
請按任意鍵繼續. . .
注意:填充的字元必須為一個長字元長(包括一個漢字),也可以不設字元,不設字元預設為空格。否則報錯。
Traceback (most recent call last):
File "xx.py", line 4, in <module>
con="李四".center(40,"張三")
TypeError: The fill character must be exactly one character long
------------------
(program exited with code: 1)
請按任意鍵繼續. . .
3.3.2 find
在字串中查詢子串。如果找到,就返回子串的第一個字元的索引,否則返回-1。
3.3.3 join
是一個非常重要的字串方法,其作用與split相反,用於把序列中的字元元素合併成字串。
'''
dirs="C:","Windows","System32","drivers","etc"
print("\\".join(dirs))
'''
C:\Windows\System32\drivers\etc
------------------
(program exited with code: 0)
請按任意鍵繼續. . .
3.3.4 lower
返回字串的小寫版本。
3.3.5 replace
將指定子串都替換為另一個字串,並返回替換後的結果。
'''
print("他是張三".replace("是","不是"))
'''
他不是張三
------------------
(program exited with code: 0)
請按任意鍵繼續. . .
3.3.6 split
是一個非常重要的字串方法,其作用與join相反,用於將字串拆分為序列。
'''
print("C:\Windows\System32\drivers\etc".split("\\"))
'''
['C:', 'Windows', 'System32', 'drivers', 'etc']
------------------
(program exited with code: 0)
請按任意鍵繼續. . .
3.3.7 strip
將字串開頭和末尾的空白(但不包括中間的空白)刪除,並返回刪除後的結果。
3.3.8 translate
與replace一樣替換字串的特定部分,但不同的是這個方法的優勢在於能夠同時替換多個字元,因此效率比replace高。
字串的方法有很多,因為其很多方法都是從模組string那裡“繼承”而來的。(在較早的Python版本中,這些方法為模組string中的函式。如果需要,現在依然能夠找到這些函式。)字串的方法太多了,這裡只介紹一些最有用的。
'''
(待續)