《Python基礎教程》學習筆記 - Lesson03:使用字符串


字符串都是不可變的,例如以下的分片是不允許的:

01(108)

 

字符串格式化操作符即百分號%;

例:

01(109)

%s為字符串的轉換字符(conversion specifier);

如果要在格式化字符串里面包括百分號,那么必須使用%%;

如果要格式化輸出浮點數,可以使用%f,若要設置保留小數點幾位可以寫成%.2f,意思是保留小數點后2位,例:

01(110)

如果要轉換的操作數是元組的話,需要用括號括起來,例:

01(111)

因為元組中的每一個元素都會被單獨格式化;

 

轉換符說明:

%字符:轉換說明符的開始;

轉換標志(可選):-表示左對齊,+表示加上正負號,""空白字符表示正數之前留空格,0表示轉換值的位數若不值則用0填充;

最小字段寬度(可選):轉換后的字符串至少應該據有該指定值得寬度,如果是*,則寬度從元組中讀取;

.后跟精度值(可選):如果轉換的是浮點型數,精度值表示的就是小數點后的位數,如果轉換的是字符串,那么該值就是最大字寬度,如果是*,那么精度會從元組中讀出;

 

轉換類型:

d, i : 帶符號的十進制正數;

o    : 不帶符號的八進制;

u    : 不帶符號的十進制;

x    : 不帶符號的十六進制(小寫);

X    : 不帶符號的十六進制(大寫);

e    : 科學計數法表示的浮點數(小寫);

E    : 科學計數法表示的浮點數(大寫);

f, F : 十進制浮點數;

g    : 如果指數大於-4或小於精度值則和e相同,否則與f相同;

G   : 如果指數大於-4或小於精度值則和E相同,否則與F相同;

C   : 單字符;

r    : 字符串(使用repr轉換);

s    : 字符串(使用str轉換);

例:

01(112)

注意,%e、%E和%f默認保留小數點后6位,可以通過類似%.10e來修改;

例,簡單的轉換;

01(113)

 

字段寬度和精度

字段寬度是轉換后的值所保留的最小字符個數;

精度(對於數字來說)則是結果中應該包含的小數位數,若是對於字符串來說是轉換后所能包含的最大字符個數;

例:

01(114)

小數點前面的是字段寬度為至少要顯示的字符數(如果不足默認用空格填充),而小點后面的為精度表示最大可以顯示的字符數,注意在字符串中使用,如果精度小於寬度,會把后面的數據截斷然后在前面填充空格;

另外,可以使用*作為字段寬度或者精度,此時該值會從元組中獲取,例:

01(115)

 

符號、對齊和0補充

在字段寬度和精度的前面還可以放置一個"標識":0、+、-和空格;

0表示:如果數字位數不夠,就在前面用0填充;

-表示:左對齊(右側出現空格);

空格表示:在正數前面加空格,用在正負數對齊上;

+表示:不管是正數還是負數都標出符號;

例:

01(116)

例,字符串格式化示例:使用給定的寬度打印格式化后的價格表;

代碼:

01(117)

header_format = '%-*s%*s' 表示格式化2個字符串,第一個字符串為左對齊,字段寬度從元組讀取,第二個字符串為默認的右對齊,字段寬度也是從元組讀取;

foramt = '%-*s%*.2f' 表示格式化一個字符串一個浮點數,第一個字符串為左對齊,字段寬度從元組讀取,浮點數為默認右對齊,字段寬度從元組讀取,精度為2;

運行結果:

01(118)

 

字符串方法

find

這個方法可以在一個較長的字符串中查找子字符串,它返回字符串所在位置的最左端索引(也就是這個關鍵字首字母的位置),如果沒找到返回-1;

例:

01(119)

find方法不返回布爾值,這里返回0表示在在索引0的位置,也就是起始位置;

另外find方法還可以設置索搜的起點和終點,例:

01(120)

當限定搜索起點和終點時,如果字符串沒有完整包括在內,是查找不到的,另外在搜索時終點索引會減少1個去對比,如果要能正確搜索到字符串需將終點索引加1;

 

join

用來在隊列中添加元素;

例:

01(121)

注意:需要添加的隊列元素必須都是字符串;

 

lower

返回字符串的小寫字母版;

例:

01(122)

和lower相光的還有title()和capwords()函數,用來把單詞首字母大寫,例:

01(123)

 

replace

返回替換某關鍵字后的新字符串;

例:

01(124)

也就是類似文本工具中的查找替換功能;

 

split

它是join的逆方法,用來將字符串分割成序列;

例:

01(125)

如果不提供任何分隔符,程序會把所有空格(制表符、換行符)作為分割符;

 

strip

該方法方法返回去除兩側(不包括內部)空格的字符串;

例:

01(126)

也可以指定要去除的字符:

01(127)

注意不加空格的區別;

 

translate

用來替換字符串的某些部分,和replace不同的是,translate方法只處理單個字符;

在使用translate之前,要先創建一張轉換表,轉換表中是以某字符替換某字符的對應關系,這里可以使用string模塊里的maketrans函數創建;

例:

01(128)

創建一張轉換表,把c替換為k,s替換為z,另外translate方法的第二個參數為可選,表示是否需要刪除某個字符,這里刪除的是空格;

下面看看創建的這個轉換表里面有什么:

01-1(13)

這張轉換表中我們要替換的字符已經被換掉,也就是translate需要參照一張類似ASICC的表;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM