字符串都是不可變的,例如以下的分片是不允許的:
字符串格式化操作符即百分號%;
例:
%s為字符串的轉換字符(conversion specifier);
如果要在格式化字符串里面包括百分號,那么必須使用%%;
如果要格式化輸出浮點數,可以使用%f,若要設置保留小數點幾位可以寫成%.2f,意思是保留小數點后2位,例:
如果要轉換的操作數是元組的話,需要用括號括起來,例:
因為元組中的每一個元素都會被單獨格式化;
轉換符說明:
%字符:轉換說明符的開始;
轉換標志(可選):-表示左對齊,+表示加上正負號,""空白字符表示正數之前留空格,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轉換);
例:
注意,%e、%E和%f默認保留小數點后6位,可以通過類似%.10e來修改;
例,簡單的轉換;
字段寬度和精度
字段寬度是轉換后的值所保留的最小字符個數;
精度(對於數字來說)則是結果中應該包含的小數位數,若是對於字符串來說是轉換后所能包含的最大字符個數;
例:
小數點前面的是字段寬度為至少要顯示的字符數(如果不足默認用空格填充),而小點后面的為精度表示最大可以顯示的字符數,注意在字符串中使用,如果精度小於寬度,會把后面的數據截斷然后在前面填充空格;
另外,可以使用*作為字段寬度或者精度,此時該值會從元組中獲取,例:
符號、對齊和0補充
在字段寬度和精度的前面還可以放置一個"標識":0、+、-和空格;
0表示:如果數字位數不夠,就在前面用0填充;
-表示:左對齊(右側出現空格);
空格表示:在正數前面加空格,用在正負數對齊上;
+表示:不管是正數還是負數都標出符號;
例:
例,字符串格式化示例:使用給定的寬度打印格式化后的價格表;
代碼:
header_format = '%-*s%*s' 表示格式化2個字符串,第一個字符串為左對齊,字段寬度從元組讀取,第二個字符串為默認的右對齊,字段寬度也是從元組讀取;
foramt = '%-*s%*.2f' 表示格式化一個字符串一個浮點數,第一個字符串為左對齊,字段寬度從元組讀取,浮點數為默認右對齊,字段寬度從元組讀取,精度為2;
運行結果:
字符串方法
find
這個方法可以在一個較長的字符串中查找子字符串,它返回字符串所在位置的最左端索引(也就是這個關鍵字首字母的位置),如果沒找到返回-1;
例:
find方法不返回布爾值,這里返回0表示在在索引0的位置,也就是起始位置;
另外find方法還可以設置索搜的起點和終點,例:
當限定搜索起點和終點時,如果字符串沒有完整包括在內,是查找不到的,另外在搜索時終點索引會減少1個去對比,如果要能正確搜索到字符串需將終點索引加1;
join
用來在隊列中添加元素;
例:
注意:需要添加的隊列元素必須都是字符串;
lower
返回字符串的小寫字母版;
例:
和lower相光的還有title()和capwords()函數,用來把單詞首字母大寫,例:
replace
返回替換某關鍵字后的新字符串;
例:
也就是類似文本工具中的查找替換功能;
split
它是join的逆方法,用來將字符串分割成序列;
例:
如果不提供任何分隔符,程序會把所有空格(制表符、換行符)作為分割符;
strip
該方法方法返回去除兩側(不包括內部)空格的字符串;
例:
也可以指定要去除的字符:
注意不加空格的區別;
translate
用來替換字符串的某些部分,和replace不同的是,translate方法只處理單個字符;
在使用translate之前,要先創建一張轉換表,轉換表中是以某字符替換某字符的對應關系,這里可以使用string模塊里的maketrans函數創建;
例:
創建一張轉換表,把c替換為k,s替換為z,另外translate方法的第二個參數為可選,表示是否需要刪除某個字符,這里刪除的是空格;
下面看看創建的這個轉換表里面有什么:
這張轉換表中我們要替換的字符已經被換掉,也就是translate需要參照一張類似ASICC的表;