[快學Python3]String(字符串)


                              [快學Python3]String(字符串)


1.概述
字符串是Python中最常用的數據類型,通常我們使用引號(單引' 或 雙引" 或 三引號""")來創建字符串。

在python3中,所有的字符串都是Unicode編碼。

對於編程而言,大部分時間都是在做字符的處理,例如字符串連接、切割、轉換、格式化等等。

下面我們如何用不同的引號來創建字符串:

a = u'我是字符串'

b = u"我是字符串"

c = """我是字符串
我是字符串
我還是字符串
"""
由上面看出,三引號括起來的字符串可以有多行。

 

2.字符串內置函數
在python中字符串內置函數提供了各種字符串處理能力,下面我們看幾個常用的函數應用示例:
(1)字符連接和切割
在python中提供了以下函數完成連接和切割功能:

join
以指定的字符串將元組、列表中的所有的元素合併爲一個新的字符串。

split
以指定的分隔符來截取字符串,返回一個list對象

下面我們看看具體的代碼示例:

# -*- coding:utf-8 -*-

__author__ = u'苦葉子'

if __name__ == "__main__":
    t = ('1', '2', '3', '4', '5', 'a', 'b', "efg")   
 
    # 用 - 將t中元素合併成一個新的字符串
    str_demo = '-'.join(t)
    print(str_demo)    
 
    # 將str_demo以-進行切割
    str_set = str_demo.split('-')
    print(str_set)    
    
    # 將t中元素合併成一個新的字符串
    str_demo = ''.join(t)
    print(str_demo)
執行結果如下:

1-2-3-4-5-a-b-efg
['1', '2', '3', '4', '5', 'a', 'b', 'efg']
12345abefg

 

(2)字符串查找和替換
在python提供了以下函數來實現查找與替換功能。

find
find(str, beg=0, end=len(string)),查找str是否包含在字符串中,若指定了beg和end,則在beg和end範圍中查找,若找到則返回開始的索引值,否則返回-1

index
同find方法,不同的是,index若未查找到,拋出一個異常信息,而不是返回-1

rfind
同find方法,不過rfind是從右邊往左邊查找。

rindex
同index方法,不過rindex是從右邊往左邊查找。

repalce
將字符串中指定的子串替換成目標字符串,如果指定了替換次數,則替換不超過指定的次數

下面我們一起看下代碼示例:

# -*- coding:utf-8 -*-

__author__ = u'苦葉子'

if __name__ == "__main__":
    source_str = u"it's my book, please show it, wa ka ka, yo yo yo!"

    # 從左往右查找yo
    print(u"從左往右查找 yo")
    print(source_str.find("yo"))
    print(source_str.index("yo"))    
    
    # 從右往左查找yo
    print(u"從右往左查找 yo")
    print(source_str.find("yo"))
    print(source_str.rindex("yo"))    
    
    # 替換所有的 yo
    des_str = source_str.replace("yo", "ha")
    print(des_str)    
    
    # 替換兩次 yo
    des_str = source_str.replace("yo", "ha", 2)
    print(des_str)
    
執行結果如下

從左往右查找 yo
40
40
從右往左查找 yo
40
46
it's my book, please show it, wa ka ka, ha ha ha!
it's my book, please show it, wa ka ka, ha ha yo!

 

(3)去字符串前後空格
去除字符串的空格需要用到以下三個字符串內置函數:

lstrip
去除字符串左邊的空格

rstrip
去除字符串右邊的空格

strip
去除字符串左右兩邊的空格,即把lstrip和rstrip都執行一遍

# -*- coding:utf-8 -*-

__author__ = u'苦葉子'

if __name__ == "__main__":    
    # 去字符串空格示例
    demo_str = "  我的前  後 和 中 間  都有空格  "
    print(demo_str)  
      
    # 去除前面的空格
    lstr = demo_str.lstrip()
    print(lstr)    
    
    # 去除後面的空格
    rstr = demo_str.rstrip()
    print(rstr)    
    
    # 去除前後的空格
    str = demo_str.strip()
    print(str)
運行結果如下:

我的前  後 和 中 間  都有空格  
我的前  後 和 中 間  都有空格  
  我的前  後 和 中 間  都有空格
我的前  後 和 中 間  都有空格

 

(4)判斷字符串類型
根據字符串數據來判斷其類型,需要用到以下函數:

isalnum
判斷字符串是否由字母或數字組成,是則返回true,否則爲false

isalpha
判斷字符串是否都是字母,是則返回true,否則爲false

isdigit 判斷字符串是否都是數字,是則返回true,否則爲false

islower 判斷字符串是否都是小寫,是則返回true,否則爲false

isnumeric 判斷字符串是否都是數字,是則返回true,否則爲false

isspace 判斷字符串是否都是空格,是則返回true,否則爲false

isupper 判斷字符串是否都是大寫,是則返回true,否則爲false

下看下上述函數的代碼示例:

# -*- coding:utf-8 -*-

__author__ = u'苦葉子'

if __name__ == "__main__":
    str_1 = "1234567890"
    str_2 = "abcdefABCDEF"
    str_3 = "12345abcdeABCDE"
    str_4 = "abcdef"
    str_5 = "ABCDEF"
    str_6 = "    "
    str_7 = " sfsdf "

    # isalnum
    print(str_3.isalnum())    
    
    # isalpha
    print(str_2.isalpha())    
    
    # isdigit
    print(str_1.isdigit())    
    
    # islower
    print(str_4.islower())
    print(str_2.islower())    
    
    # isupper
    print(str_4.isupper())
    print(str_2.isupper())    
    
    # isspace
    print(str_6.isspace())
    print(str_7.isspace())
具體運行結果,你可以將上述代碼運行查看實際結果,並可以嘗試修改上述代碼看看。

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