1. 程式人生 > >python 基本資料型別--字串例項詳解

python 基本資料型別--字串例項詳解

  字串(str) :把字元連成串. python中⽤', ", ''', """引起來的內容被稱為字串 。

  注意:python中沒有單一字元說法,統一稱叫字串。

一、切片和索引

  1、索引:索引就是下標,從0開始

    

str= "我是字串"
print("str[0]=",str[0])
print("str[1]=",str[1])
print("str[2]=",str[2])
print("str[3]=",str[3])
print("str[4]=",str[4])
結果:
str[0]= 我
str[1]= 是
str[2]= 字
str[3]= 符
str[
4]= 串

  2、切片:可以使用下標來擷取部分字串的內容

    語法:str[start:end]

    規則:顧頭不顧尾,從start開始擷取,擷取到end位置,但是不包括end。

s2 = "python最⽜B"
print(s2[0:3]) # 從0獲取到3. 不包含3. 結果: pyt
print(s2[6:8]) # 結果 最⽜
print(s2[6:9]) # 最⽜B
print(s2[6:10]) # 如果右邊已經過了最⼤值. 相當於獲取到最後 ;最⽜B
print(s2[4:]) # 如果想獲取到最後. 那麼最後⼀個值可以不給. 
print(s2[-1:-5]) #
從-1 獲取到 -5 這樣是獲取不到任何結果的. 從-1向右數. 你怎麼數也數不到-5 print(s2[-5:-1]) # ⽜b, 取到資料了. 但是. 顧頭不顧腚. 怎麼取最後⼀個呢? print(s2[-5:]) # 什麼都不寫就是最後了 print(s2[:-1]) # 這個是取到倒數第⼀個 print(s2[:]) #原樣全部輸出

    間隔擷取:  

      語法:str[start:end:step]  #step表示間隔多少取一個

print(s2[1:5:2]) # 從第⼀個開始取, 取到第5個,每2個取1個, 結果: yh, 分析: 1:5=>ytho => yh
print(s2[:5:2]) # 從頭開始到第五個. 每兩個取⼀個 print(s2[4::2]) # 從4開始取到最後. 每兩個取⼀個 print(s2[-5::2]) # 從-5取到最後.每兩個取⼀個 print(s2[-1:-5]) # -1:-5什麼都沒有. 因為是從左往右獲取的. print(s2[-1:-5:-1]) # 步⻓是-1. 這時就從右往左取值了 print(s2[-5::-3]) # 從倒數第5個開始. 到最開始. 每3個取⼀個, 結果oy

  步⻓: 如果是整數, 則從左往右取. 如果是負數. 則從右往左取. 預設是1
  切片語法:
    str[start:end:step]
    start: 起始位置
    end: 結束位置
    step:步⻓

 

二、字串其他操作

  切記:字串是不可變得物件,所以任何操作都不能對原字串進行修改,如果需要更改字串必須給變數重新賦值。

  準備字串:s1="python" ; s2="pycharm"

  1、s1.capitalize( )   首字母大寫

print(s1.capitalize()) #Python

  2、s1.upper( )   全部大寫

print(s1.upper()) #PYTHON

  3、s1.lower( )  全部小寫

print(s1.upper().lower()) #python

  4、s.title( ) 每個單詞首字母大寫

s="money is the bastard"
print(s.title()) #Money Is The Bastard

  5、s.center( width,fillchar=None)  字串居中,總長度為width,其餘位置用符號fillchar填充

s="join_l"
print(s.center(16,"*")) #*****join_l*****

   6、s.strip()   去掉左右兩端的空格

s = " we are Frirends  "
ret = s.strip() # 去掉左右兩端的空格
print(ret)

  7、ret = s.lstrip()  去掉左邊空格

  8、ret = s.rstrip( )   去掉右邊空格

  9、ret = s.replace(s1,s2)  把字串中的s1替換為s2

s="Are you good men"
s=s.replace("men","women") 
print(s) #Are you good women

  注意:字串不可變,必須重新賦值回去,才能實現真正的替換

  10、s.split(sep) 以sep切割字串,返回一個列表

s="Are-you-good-men"
print(s.split("-")) #['Are', 'you', 'good', 'men']

 

三、字串的格式化輸出

# 格式化輸出
s12 = "我叫%s, 今年%d歲了, 我喜歡%s" % ('sylar', 18, '周杰倫') # 之前的寫法
print(s12)
s12 = "我叫{}, 今年{}歲了, 我喜歡{}".format("周杰倫", 28, "周潤發") # 按位置格式化
print(s12)
s12 = "我叫{0}, 今年{2}歲了, 我喜歡{1}".format("周杰倫", "周潤發", 28) # 指定位置
print(s12)
s12 = "我叫{name}, 今年{age}歲了, 我喜歡{singer}".format(name="周杰倫", singer="周潤", age=28) # 指定關鍵字
print(s12)

 

四、查詢

  1、s.tartswith(“字串”) 判斷是否以某字串開頭

s="you are lucky dog"
print(s.startswith("you")) #True
print(s.startswith("are")) #True

  2、s.endswith(“字串”) 判斷是否以某字串結尾

  3、s.count( "字串") 查詢字串出現的次數

s="I Love a girl,she is supergirl"
print(s.count("i"))

  4、s.find("字串“) 尋找字串出現的第一個位置

s="I Love a girl,she is supergirl"
print(s.find("i")) #10

  5、s.index("字串")  查詢字串,並返回第一個的索引

ret = s.index("girl") # 求索引位置. 注意. 如果找不到索引. 程式會報錯
print(ret)

 

五、條件判斷

  1、s.isalnum()  是否字⺟和數字組成
  2、s.isalpha()  是否由字⺟組成
  3、s.isdigit()  是否由數字組成, 不包括⼩數點

# 練習. ⽤演算法判斷某⼀個字串是否是⼩數
s17 = "-123.12"
s17 = s17.replace("-", "") # 替換掉負號
if s17.isdigit():
  print("是整數")
else:
  if s17.count(".") == 1 and not s17.startswith(".") and not s17.endswith("."):
  print("是⼩數")
else:
  print("不是⼩數")

 

六、計算字串的長度

  s.len("字串")

s="I Love a girl,she is supergirl"
print(len(s)) #30

 

7、可迭代

  可以用for迴圈拿去每一個元素。

s= "join"
for i in s:
    print(i)
結果:
j
o
i
n