python複習(格式化字串)

語言: CN / TW / HK

使用print()函式很容易輸出各種物件,但print()函式無法輸出設計複雜的格式。Python提供了字串格式化的方法來處理複雜格式的字串。

%符號格式化字串

  • 字串格式化涉及到兩個概念:格式和格式化,其中格式以%開頭,格式化運算子用%表示用物件代替格式串中的格式,最終得到1個字串。
  • 字串格式化的一般形式如圖所示:

image.png

常用格式字元%的含義

image.png

IN ``` name='Lily' age=18 print('我叫%s,今年%d歲'%(name,age))

一次轉換多個物件,這些物件表示成一個元組形式,位置與格式化字元一一對應

OUT 我叫Lily,今年18歲 ```

format()方法格式化字串

format()方法是通過{}:來代替傳統%方式。一般形式如圖所示:

image.png

format方法格式化時,可以使用位置引數,根據位置來傳遞引數;也可以通過索引值來引用位置引數,只要format方法相應位置上有引數值即可,引數索引從0開始;

IN print('我叫{},今年{}歲'.format('張三',18)) print('我叫{0},今年{1}歲'.format('張三',18)) print('我叫{1},今年{0}歲'.format(18,'張三')) OUT 我叫張三,今年18歲 我叫張三,今年18歲 我叫張三,今年18歲

f-string格式化字元

f-string 格式化字串以 f 開頭,後面跟著字串,字串中的表示式用大括號 {} 包起來,它會將變數或表示式計算後的值替換進去,例項如下:

IN name='張三' age=18 print(f'我叫{name},今年{age}歲') OUT 我叫張三,今年18歲

字串擷取

  • 字串的擷取就是取出字串中的子串。擷取有兩種方法:一種是索引str[index]取出單個字元;另一種是切片str[[start]:[end]:[step]]取出一片字元。切片方式與列表部分介紹的一樣。

  • 字串中字元的索引跟列表一樣,可以雙向索引。如圖所示:

image.png

IN s='student' print(s[0]) print(s[-1]) print(s[1:3])#取出位置1到位置2的字元,不包括位置3的字元 print(s[:3])#取出從頭到位置2的字元 print(s[-2:])#取出從倒數第2個位置開始的所有字元 print(s[:])#取出全部字元 print(s[::2])#步長為2 OUT s t tu stu nt student suet

字串處理:

IN ``` str1 = 'hello, world!'

通過內建函式len計算字串的長度

print(len(str1)) # 13

獲得字串首字母大寫的拷貝

print(str1.capitalize()) # Hello, world!

獲得字串每個單詞首字母大寫的拷貝

print(str1.title()) # Hello, World!

獲得字串變大寫後的拷貝

print(str1.upper()) # HELLO, WORLD!

從字串中查詢子串所在位置

print(str1.find('or')) # 8 print(str1.find('shit')) # -1

與find類似但找不到子串時會引發異常

print(str1.index('or'))

print(str1.index('shit'))

檢查字串是否以指定的字串開頭

print(str1.startswith('He')) # False print(str1.startswith('hel')) # True

檢查字串是否以指定的字串結尾

print(str1.endswith('!')) # True

將字串以指定的寬度居中並在兩側填充指定的字元

print(str1.center(50, '*'))

將字串以指定的寬度靠右放置左側填充指定的字元

print(str1.rjust(50, ' ')) str2 = 'abc123456'

檢查字串是否由數字構成

print(str2.isdigit()) # False

檢查字串是否以字母構成

print(str2.isalpha()) # False

檢查字串是否以數字和字母構成

print(str2.isalnum()) # True

str3 = ' [email protected] ' print(str3)

獲得字串修剪左右兩側空格之後的拷貝

print(str3.strip()) OUT 13 Hello, world! Hello, World! HELLO, WORLD! 8 -1 False True True ***hello, world!**** hello, world! False False True [email protected] [email protected] ```