1. 程式人生 > >python基礎教程(第三版)學習筆記(三)

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中的函式。如果需要,現在依然能夠找到這些函式。)字串的方法太多了,這裡只介紹一些最有用的。

'''

(待續)