Python 入門 27 —— 字符串

一、基本規則

1、字符串屬於不可變序列類型,一旦創建,無法改變。

2、單引號、雙引號、三單引號、三雙引號都可以作爲界定符,並且不同的界定之間可以相互嵌套。例如:

print('aa',"bb", '''cc''', """dd""", '"ee"', "'ff'", "'''gg'")    # aa  bb  cc  dd  "ee"  'ff'  '''gg'

3、字符串之間可以用加法進行拼接。例如:

x='aa'+"bb"+'''cc'''+"""dd"""+'"ee"'+"'ff'"+"'''gg'"
print(x)    # aabbccdd"ee"'ff''''gg'

4、字符串可以用乘法進行復制。例如:

print('a'*5,'xyz'*3)    # aaaaa    xyzxyzxyz

5、可以對字符串進行切片操作,例如:

x='abcdefgh'; print(x[2:6],x[2:],x[:6])    # cdef cdefgh abcdef

6、轉義字符

轉義字符,就是在一個字符前加上反斜槓“\”,使它不再表示原來的字符,而變成另外一個意思。例如,n 是小寫字母,\n 是換行符。常用的轉義字符有:

\b ———— 退格符
\f ———— 換頁符
\n ———— 換行符
\r ———— 回車符
\t ———— 水平製表符
\v ———— 垂直製表符
\\ ———— \
\' ———— '
\" ———— "
\3個數字 ———— 一個字符的 ASCII 編碼的8進製表示
\x2個數字 ———— 一個字符的ASCII 編碼的16進制數表示
\u4個數字和字符 ———— 一個字符的Unicode 編碼的16進制數表示

例如:

print('aaa\bccc')    # aaccc
print('ddd\neee')
# 顯示
# ddd
# eee

print('\\')    # \
print('\'')    # '
print('\"')    # "

print('\141','\142','\143','\101','\102','\103')    # a b c A B C
print('\x97','\x98','\x99','\x41','\x42','\x43')    # —a b c A B C
print('\u0041','\u0042','\u0043','\u597d','\u5927','\u7b11')    # A B C 好 大 笑

二、字符串的格式化

1、基本形式

基本形式:‘%格式字符’%對象

功能:將對象轉換成“等值”的其它形式。

格式字符有:

d ———— 十進制整數
o ———— 8進制
x ———— 16進制
e ———— 科學計數法,e小寫
E ———— 科學計數法,e大寫
f ———— 浮點數(缺省6位)
g ———— 6位之內浮點數,6位之外科學計數法
G ———— 同g,e大寫
c ———— 反查Unicode編碼表,取對象對應的字符
s ———— 對象的__str__方法的返回值
r ———— 對象的__repr__方法的返回值
%% ———— %

例如:

import datetime

print('%d'%65.336)    # 65
print('%o'%65)    # 101
print('%x'%65)    # 41

print('%e'%65.336)    # 6.533600e+01
print('%E'%65.336)    # 6.533600E+01

print('%f'%65.336)    # 65.336000
print('%f'%65.3366778822)    # 65.336678

print('%g'%650000)    # 650000
print('%g'%6500000)    # 6.5e+06
print('%G'%6500000)    # 6.5E+06

print('%c'%65)    # A

d = datetime.date.today()
print('%s'%d)    # 2020-02-06
print('%r'%d)    # datetime.date(2020, 2, 6)

print('百分數:%f %%'%65.336)    # 百分數:65.336000 %

2、指定寬數和對齊方式

形式:‘%[對齊方式][最小寬數]格式字符’%對象

+ ———— 右對齊;正數前加正好,負數前加負號;
- ———— 左對齊;正數前無符號,負數前加負號;
空格 ———— 右對齊;正數前加空格,負數前加負號;
0 ———— 右對齊;正數前無符號,負數前加負號;用0填充空白處

最小寬數缺省爲0,對齊方式缺省爲右對齊,例如:

print('%20d'%65)    #                  65
print('%20d'%-65)    #                  65

print('%+20d'%65)    #                 +65
print('%+20d'%-65)    #                 -65

print('%-20d'%65)    #65
print('%-20d'%-65)    #-65

print('% 20d'%65)    #                  65
print('% 20d'%-65)    #                 -65

print('%020d'%65)    #00000000000000000065
print('%020d'%-65)    #-0000000000000000065

3、指定精度

形式:‘%[.小數位數]f’%對象

小數位數缺省爲6,例如:

print('%.2f'%65.333)    # 65.33
print('%.2f'%65.3366)    # 65.34

print('%20.2f'%65.333)    #               65.33
print('%20.2f'%-65.3366)    #               -65.34

三、常用函數

1、查找:find()、index()、rfind()、rindex()、count()、in

find()、index()都是查找一個字符串在另一個字符串中第一次的位置。二者的區別是,在查找不到的情況下,find()返回-1,index()執行異常。

rfind()、rindex() 是從後向前查找第一次出現的位置。

find(x,y)、index(x,y) 從指定的區間[x,y)查找,含x,不含y。

count() 返回一個字符串在另一個字符串中出現的次數,查找不到返回0。

x in y ,x 在 y 中 返回 True,不在返回 False。

例如:

x='abcdefg--abcdefg'
print(x.find('ab'),x.find('cde'),x.find('f'))    # 0    2    5
print(x.index('ab'),x.index('cde'),x.index('f'))    # 0    2    5

print(x.find('w'))    # -1
print(x.index('w'))    # ValueError: substring not found

print(x.rfind('ab'),x.rfind('cde'),x.rfind('f'))    # 9    11    14
print(x.rindex('ab'),x.rindex('cde'),x.rindex('f'))    # 9    11    14

print(x.find('ab',2),x.find('cde',2),x.find('f',2))    # 9    2    5
print(x.index('ab',2),x.index('cde',2),x.index('f',2))    # 9    2    5

print(x.find('f',5,15))    # 5
print(x.find('f',9,15))    # 14
print(x.find('f',9,14))    # -1

print(x.count('c'),x.count('c',1,6),x.count('w'))    # 2    1    0

print('ab' in 'aabbcc','abc' in 'aabbcc')    # True    False

2、分隔與連接:split()、rsplite()、partition()、rpartition()、join()

split(‘x’)、rsplite(‘x’) 用指定的分隔符x從左向右、從右向左分隔。

split(‘x’,y)、rsplite(‘x’,'y) 指定分隔次數y。

partition(‘x’)、rpartition(‘x’) 用指定的分隔符x從左向右、從右向左分隔成三部分:前、x、後。

x.join(y) 返回用用連接符x 連接字符串y 後的新字符串。例如:

例如:

x='abcdefg--abcdefg'

print(x.split('c'))    # ['ab', 'defg--ab', 'defg']
print(x.rsplit('c'))    # ['ab', 'defg--ab', 'defg']

print(x.split('c',1))    # ['ab', 'defg--abcdefg']
print(x.rsplit('c',1))    # ['abcdefg--ab', 'defg']

print(x.partition('c'))    # ('ab', 'c', 'defg--abcdefg')
print(x.rpartition('c'))    # ('abcdefg--ab', 'c', 'defg')

x='--'
print(x.join('ddd'))    # d--d--d

y = ['ab','cd','ef','gg']
print(''.join(y))    # abcdefgg
print(x.join(y))    # ab--cd--ef--gg

3、大小寫:lower()、upper()、capitalize()、title()、swapcase()

x.lower()、x.upper() 返回 x 全部轉換成小寫、大寫後的新字符串。

x.capitalize() 返回 x 的首字母大寫,其餘全部小寫的新字符串。

x.title() 返回 x 每個單詞首字母大寫,其餘全部小寫的新字符串。

x.swapcase() 返回 x 每個字母大小寫互換後的新字符串。

例如:

x='this is a White Desk'

print(x.lower())    # this is a white desk
print(x.upper())    # THIS IS A WHITE DESK
print(x.capitalize())    # This is a white desk
print(x.title())    # This Is A White Desk
print(x.swapcase())    # THIS IS A wHITE dESK

4、替換:replace()、maketrans()、translate()

x.replace(a,b) 返回 x 中所有a 被替換成b 之後 的新字符串。

t=’’.maketrans(a,b)、x.translate(t) 先依據a、b建立一個字典,然後,依據這個這典將x中的a 逐個替成b 。

例如:

x='this is a White Desk'
print(x.replace('s', 'vvvv'))    # thivvvv ivvvv a White Devvvvk

t=''.maketrans('hws','xyz')
print(x.translate(t),t)    # txiz iz a Wxite Dezk {104: 120, 119: 121, 115: 122}

5、清理:strip()、lstrip()、rstrip()

x.strip(y)、x.rstrip(y)、x.lstrip(y) 刪除x 兩端、左側、右側指定的字符串y內所有包含的字符,y缺省爲空格。例如:

**x='   abcwwwwbbccaa    '
print('|',x,'|',x.strip(),'|',x.lstrip(),'|',x.rstrip(),'|')
# 顯示:|    abcwwwwbbccaa     | abcwwwwbbccaa | abcwwwwbbccaa     |    abcwwwwbbccaa |
print(x.strip('a b'))    # cwwwwbbcc**

6、運行:eval()

eval(x) 將字符串看作表達式進行解釋運行。例如:

print(eval('3+6+100+3000'))    # 3109

eval()函數只能計算單個表達式的值(不支持任何形式的賦值操作),可以有返回值;exec()函數可以動態運行代碼段,無返回值。

———————————————— 本篇完 ————————————————

看完之後,麻煩您順手點擊下方 “點贊” 兩個字給我點個贊吧 ^-^ , 謝謝您了。

如果您還能像我小學一年級班主任好老師那樣,給我隨心寫上幾句表揚或批評的話語,那真是感激不盡!

在我人生的道路上,有了您的鼓勵和指導,我一定成長快快。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章