天天看點

[python字元串的索引與切片操作_python 3 基礎之字元串下标索引、切片、方法

字元串定義

name = “”或name = ‘’或name = str()

保留文本格式(需要用三引号,''''''或"""""")

字元串的下标索引(中括号裡的下标索引 需要在字元串序列數中,超出會報錯;若從右到左算從-1開始,都是等價的,實際開發都是從0開始),如

my_str = 'hello'

ret = my_str[2]

print(ret)

字元串切片(切片是指對操作的對象截取其中一部分的操作)

切片的文法:[起始:結束(開區間):步長],一般情況步長不寫,預設為1

a = 'abcdef'

print(a[-1:-4:-2])#-1:從右到左;-4:從右到左取到第四位,即c;-2:步長為右到左2位

取abc -> a[0:3] 或者 a[:3],若從頭開始取,0可以省略不寫

print(a[0:3])

字元串的方法

a = 'abcdef'

1、find(查找字元串裡的字元,傳回其下标索引)

查詢到對應的字元串會傳回一個下标索引,若沒有,則傳回-1

ret1 = a.find('d')

print(ret1)

print(a.find('a',1))#從下标1開始,查找在字元串裡第一個出現的子串:傳回結果-1

2、index用法與find一樣,index若找不到會異常

19、rindex 類似index(),這是從右到左查找,找到沒事沒找到報異常

18、rfind 類似find()方法(從左到右查找),這是從右到左開始找(索引編号還是原來的左到右),兩者用法看字元串長度決定用哪個(查找速度、性能)

a = 'abcdefabcd'

print(a.rfind('b'))#若沒找到報-1

3、count(計算字元串中某個字元出現的次數,若沒找到則0)

格式:str.count("char", start,end)

char —— 為要統計的字元(可以是單字元,也可以是多字元)。

star —— 為索引字元串的起始位置,預設參數為0。

end —— 為索引字元串的結束位置,預設參數為字元串長度即len(str)。

print(a.count('a'))

print(a.count("i",2,5)) #star值為2,end值為5

4、replace(把字元串裡的某個字元進行更改)

a = 'abcdefghaa'

ret4 = a.replace('a','ds',1)#把a修改成ds,隻修改一次,如删掉後面的1,則代表更改字元串裡的所有a

print(a)#列印a不是修改後的字元串,字元串是不變的,隻能重新定義一個變量

print(ret4)

print(a.replace('a','ds',1))#等價于print(ret4)

5、split(以某個字元為界分割字元串,分割後此字元串不存在;分割後産生一個新的資料類型:清單)

str.split() 預設以空格,換行(\n),制表符\t分割

str.split('字元串'):以字元串為分割

str.split('字元串',2)分割以前2次出現的字元串為分割

a = 'abacdefandafinad'

ret5 = a.split('a')

print(ret5)

22、splitlines 找到字元串裡的\n,預設以此為界分隔字元(\n會自動删掉),傳回一個包含各行作為元素的清單

splitlines() 方法文法:S.splitlines([keepends=False])

keepends -- 在輸出結果裡是否去掉行界符('\r', '\r\n', \n'等),預設為 False,不包含行界符,如果為 True,則保留行界符。

a = 'abcd\nedsd\ndk\nds'

ret = a.splitlines()

print(ret)

print(type(ret))

6、capitalize 把字元串的第一個字元大寫

a = 'sadkjhkj'

print(a.capitalize())#實則變量a還是a,沒有改變

7、title把字元串裡的每個單詞首字母大寫

a = 'a bc de f'#若用空格分開,則認為是多個單詞,否則當做一個單詞處理

print(a.title())

10、lower 轉換字元串中的大寫字元為小寫,小寫不變

a = 'NXCBdefandafinad'

print(a.lower())

11、upper把字元串中的小寫全部轉換成大寫

a = 'abacdefanXdafinad'

print(a.upper())

8、startswith 檢查字元串是否以某些字元開頭,是則傳回True,否則傳回False

a = 'abacdefandafinad'

print(a.startswith('aba'))

9、endswith 檢查字元串是否以某些字元結尾,是則傳回True,否則傳回False

a = 'abacdefandafinad'

print(a.endswith('nad'))#區分大小寫

可能會上傳個檔案是MP4字尾結束,此時需要endswith判斷

12、ljust 傳回一個原來字元串左對齊,并使用空格填充至長度width的新字元串

a = 'what'

ret1 = a.ljust(10,'x') 原來的字元串先左對齊,如果不夠10位,用x表示,占據10個位置,10看業務需求決定

print(ret1)

13、rjust(跟ljust用法一緻)

a = 'what'

ret2 = a.rjust(10,'x') #原來的字元串先右對齊,如果不夠10位,用x表示,占據10個位置

print(ret2)

設想左邊三個1右邊三個1中間abcd

14、center 居中

a = 'abcd'

print(a.center(10,' '))#若不對稱則預設左邊少一個

15、lstrip 删除字元串裡字元左邊的空格,包括\n和\t(\t指的是Tab鍵)(中間的空字元不去除)

a = ' dsk k '

print(a.lstrip())

也可以把字元左側的一些字元删除掉,如

a = '11123abdc'

print(a.lstrip('12'))#不填則預設去除空格,填則隻能填最左邊的某些字元,詞句去除了左邊的1和2

16、rstrip 去除字元串最右邊的空格或一些字元

a = 'dksdl33443k'

print(a.rstrip('34k'))#去掉字元串中的3和4、k

17、strip 去除字元串兩邊的空格或字元

a = '23222abcd1x21212'

print(a.strip('123'))#去除兩邊的123

20、partition 把字元串以某個字元分割(從左到右,找到第一個e,以此為界分割)成三部分,字元串前、字元串、字元串後

a = 'abcdefghe'

ret = a.partition('e')

print(ret)#産生新的資料類型

print(type(ret))

23、isalpha 判斷一個字元串裡是否全部是字母,是則傳回布爾值True,否則False

a = 'abcdefghe'

ret = a.isalpha()

print(ret)

24、 isdigit判斷字元串裡是否全是數字,是則傳回布爾值True,否則False

a = '0435435'

ret = a.isdigit()#網站判斷密碼過于簡單就是用這個來判斷的

print(ret)

25、isalnum 字元串裡的所有字元都是字母或數字則傳回True,否則False

a = 'abcd213efghe'

ret = a.isalnum()

print(ret)

26、isspace 字元串中隻包含空格,則傳回 True,否則傳回 False

27、join 字元串中每個元素後面插入str,構造出一個新的字元串

用人話說:把一個清單裡的元素合在一起,構成一個新的字元串

定義一個清單(清單裡的叫元素)

my_list = ['li','baoc','dabei']

ret = ' '.join(my_list)#引号裡輸入什麼,列印出來的字元串裡的字元(原來是清單裡的元素)就以什麼