1. 程式人生 > >十、str的索引、切片和str常用的操作方法(重點)

十、str的索引、切片和str常用的操作方法(重點)

好的 進制 split clas 全部 else sda 全棧 Python全棧

1.str的索引、切片

(1)按照索引取值:

s1[index](取出來的類型都是str)

從左至右有順序,下標,索引(標誌從0開始 0123......)

比如:

s1 = ‘python全棧22期‘
s2 = s1[0]
print(s2,type(s2)) #p <class ‘str‘>
s3 = s1[2]
print(s3) #t
s4 = s1[-1]
print(s4) #期

(2)按照切片取值(顧頭不顧尾

s1[start_index : end_index+1]

(第一位是0時可以省略不寫)

比如:

s1 = ‘python全棧22期‘
s5 = s1[0:6]
s5 = s1[:6]
print(s5) #python(第一位開始,可省略不寫;n是第5,要後延1位)
s6 = s1[6:]
print(s6) #全棧22期(一直到最後一位,最後一位可省略不寫)

(3)切片步長:

s1[start_index : end_index+1:步長]

比如:

s1 = ‘python全棧22期‘
s7 = s1[:5:2]
print(s7) #pto(與切片原理一樣,加入了步長,可以隔一個輸出下一個)

print(s1[:]) #python全棧22期 (全部輸出)

(4)倒序,反向按照切片步長:

s1[start_index : end_index後延一位:步長(負的)]

比如:

s1 = ‘python全棧22期‘
s8 = s1[-1:-6:-1]
print(s8) #期22棧全

#思考:倒序全部取出來?
s1 = ‘python全棧22期‘
s9 = s1[::-1] #期22棧全nohtyp

練習:

有字符串s = "123a4b5c"

通過對s切片形成新的字符串s1,s1 = "123"

s1 = s[:3]
print(s1)
通過對s切片形成新的字符串s2,s2 = "a4b"
s2 =s[3:-2]
print(s2)
通過對s切片形成新的字符串s3,s3 = "1345"
s3 =s[:-1:2]
print(s3)
通過對s切片形成字符串s4,s4 = "2ab"
s4 =s[1:-2:2]
print(s4)
通過對s切片形成字符串s5,s5 = "c"
s5 =s[-1]
print(s5)
通過對s切片形成字符串s6,s6 = "ba2"
s6 =s[-3:0:-2]
print(s6)

2.str 字符串常用的操作方法

不會對原字符串進行任何操作,都是產生一個新的字符串

(1)upper (大寫)lower (小寫)

s1 = s.upper()
s1 = s.lower()

# 應用:
username = input(‘用戶名‘)
password = input(‘密碼‘)
code = ‘QweA‘
your_code = input(‘請輸入驗證碼:不區分大小寫‘)
if your_code.upper() == code.upper():
  if username == ‘太白‘ and password == ‘123‘:
    print(‘登錄成功‘)
  else:
    print(‘用戶名密碼錯誤‘)
else:
  print(‘驗證碼錯誤‘)

2)startswith(開頭) endswith(結尾)

就是判斷某某開頭(結尾)是否正確

s.startswith(‘內容‘)

s.endswith(‘內容‘)

比如:

s = ‘taiBAifdsa‘
print(s.startswith(‘t‘))
print(s.startswith(‘taiBAi‘))

#結果都是True,是t taiBAi 開頭

(了解)加入切片:

比如:

s = ‘taiBAifdsa‘
print(s.startswith(‘B‘,3,6))

#結果都是True,將s切片,表示第3位到第5位(顧頭不顧尾加1=6)的開頭是B

(3)replace (替換)

s.replace(被替換內容,要替換的內容)

比如:

msg = ‘alex 很nb,alex是老男孩教育的創始人之一,alex長得很帥‘
msg1 = msg.replace(‘alex‘,‘太白‘) # 默認全部替換
msg2 = msg.replace(‘alex‘,‘太白‘,2) # 從左到右替換前2個
print(msg1)
#太白 很nb,太白是老男孩教育的創始人之一,太白長得很帥
print(msg2)
#太白 很nb,太白是老男孩教育的創始人之一,alex長得很帥

(4)strip (去除空白):空格,\n(換行符),\t(TAB鍵)

s.strip()

比如:

s4 = ‘ \n太白\t‘ #太白前邊既有空格又有換行
print(s4)

s5 = s4.strip()
print(s5) #將空格、換行全部清除

(了解)可以去除指定的字符

比如:

s4 = ‘rre太r白qsd‘
s5 = s4.strip(‘qrsed‘)
print(s5)
#結果為:太r白,因為規則是:從前往後、從後往前同時進行,遇到剔除的內容就剔除,直到遇到不用剔除的內容停下,所以“太r白”中間的“r”沒有剔除

(5)split(非常重點)(分割)

s.split(‘默認空格,或指定的分割符號或內容‘)

默認按照空格分割,返回一個列表

可以指定分隔符,進行分割

str——>list

比如:

s6 = ‘太白:女神:吳超‘
l = s6.split(‘:‘)
print(l)
#結果:[‘太白‘, ‘女神‘, ‘吳超‘]

(了解)

s6 = ‘:barry:nvshen:wu‘
print(s6.split(":",2))
#結果:[‘‘, ‘barry‘, ‘nvshen:wu‘],讓前2個分開,後面不分開

(6)join(非常好用)(加入)

‘所要加入的內容‘.join(s)

s1 = ‘alex‘
s2 = ‘+‘.join(s1)
print(s2,type(s2))
#結果:a+l+e+x <class ‘str‘>

list——>str(列表元素必須是字符串)

比如:

l1 = [‘太白‘, ‘女神‘, ‘吳超‘] # 前提:列表裏面的元素必須都是str類型
s3 = ‘:‘.join(l1)
print(s3)
#結果:太白:女神:吳超

(7)count(計數)

s.count(‘要計數的內容‘)

比如:

s8 = ‘sdfsdagsfdagfdhgfhgfhfghfdagsaa‘
print(s8.count(‘a‘))
#結果:5 ,即為a出現了5次

(8)format(格式化輸出)

  • 第一種用法:

msg = ‘我叫{}今年{}性別{}‘.format(‘大壯‘, 25, ‘男‘)

print(msg)

#結果:我叫大壯今年25性別男

  • 第二種用法:

msg = ‘我叫{0}今年{1}性別{2}我依然叫{0}‘.format(‘大壯‘, 25,‘男‘)

print(msg)

#結果:我叫大壯今年25性別男我依然叫大壯

  • 第三種用法:

a = 100

msg = ‘我叫{name}今年{age}性別{sex}‘.format(age=a,sex=‘男‘,name=‘大壯‘)

print(msg)

#結果:我叫大壯今年100性別男

note:註意格式,s = ‘.....{a}....{b}......{c}...’.format(a=xxx,b=xxx,c=xxx),別忘了中間的{}

(9)is 系列

name.isalnum() #字符串由字母或數字組成
name.isalpha() #字符串只由字母組成
name.isdecimal() #字符串只由十進制組成

比如:

s1 = input(‘請輸入您的金額:‘)
if s1.isdecimal():
  print(int(s1))
else:
  print(‘輸入有誤‘)
#結果:會顯示用戶輸入的金額,如果有非數字,會顯示輸入有誤,結束程序

(10)in

s1 = ‘老男孩edu‘
print(‘老‘ in s1)
print(‘老男‘ in s1)
print(‘老ed‘ in s1)
print(‘老ed‘ not in s1)
#結果:
True
True
False
True
(必須是相連的)

(11)len:獲取可叠代對象的元素總個數

len(s)

比如:

s1 = ‘老男孩教育最好的講師:太白‘

print(len(s1))
#結果:13

練習:將’老男孩教育最好的講師:太白0’豎著顯示:

s1 = ‘老男孩教育最好的講師:太白‘
index = 0
while index < len(s1):
  print(s1[index])
  index += 1
#結果:












十、str的索引、切片和str常用的操作方法(重點)