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] ```