Python內置數據結構——字符串string

字符串

字符串定義

  • 一個個字符組成的有序的序列,是字符的集合

  • 使用單引號、雙引號、三引號引住的字符序列

  • 字符串是不可變對象

  • Python3起,字符串就是Unicode類型

字符串元素訪問——下標

        字符串支持使用索引訪問

   sql = “select * from user where name”
   sql[4] #字符串‘c’

        有序的字符集合,字符序列

      for c in sql:

        可迭代

      lst = list(sql)

字符串join連接

“string”.join(iterable)  ->  str

        將可迭代對象連接起來,使用string作爲分隔符

        可迭代對象本身元素都是字符串

        返回一個新字符串

    lst = ['1','2','3']
    print("\" ".join(lst)) # 分隔符是雙引號

+  -> str

        將2個字符串連接在一起返回新的字符串

字符串分割

分割字符串的方法分爲2類:

    1.split系 -> list

            將字符串按照分隔符分割成若干個字符串,並返回列表(list)

    2.partition系 -> tuple

            將字符串按照分隔符分割成2段,返回這2段和分隔符的元組(tuple)

split (sep = None,maxsplit = -1) -> list of string

rsplit(sep = None,maxsplit = -1) - > list of string

            split從左至右,rsplit從右至左

            sep指定分割字符串,缺省的情況下空白字符串(包括空格 \r \n \r\n \t)作爲分隔符

            maxsplit 指定分割的次數, -1表示遍歷整個字符串

splitlines([keepends])-> list of string

            按照 行 來切分字符串

            keepend 指的是 是否保留分行符(默認False不保留;True 保留)

            行分隔符包括 \n  \r\n \r等

partition(sep) -> (head,sep,tail) -> tuple of string

            partition從左至右(rpartition 從右至左),遇到分隔符就把字符串分割成2部分,返回頭、分隔符、尾三部分的三元組。如果沒有找到分隔符,就返回頭, 2個空元素的三元組

            sep分割字符串,必須指定,而且不能爲空“”

字符串大小寫

upper()

    全大寫

lower()

    全小寫

大小寫,做判斷的時候用

swapcase()

    交互大小寫

字符串排版

title() -> str

        標題的每個單詞的首字母都大寫

capitalize() -> str

        首個單詞首字母大寫

center(width[,fillchar]) -> str

        width 打印寬度

        fullchar 填充的字符

zfill(width) -> str

        width 打印寬度,居右,左邊用0填充

ljust(width[,fillchar]) -> str 左對齊

rjust(width[,fillchar]) -> str 右對齊

字符串修改

repalce(old,new[,count]) -> str

        從左到右在字符串中找到子串替換爲心子串,返回新字符串

        count表示替換幾次,不指定就是全部替換

strip([chars]) -> str

        從字符串兩端去除指定的字符集chars中的所有字符

        如果chars沒有指定,去除兩端的空白字符

lstrip([chars]) -> str:從左開始

rstrip([chars]) -> str: 從右開始

字符串查找

find(sub[,start[,stop]]) -> int

        在指定的區間[start,end),從左至右,查找子串sub.找到返回索引,沒找到返回 -1

rfind(sub[,start[,stop]]) -> int

        在指定的區間[start,end),從右至左,查找子串sub.找到返回索引,沒找到返回 -1

PS: strat索引位置必須在stop索引位置的左邊,否則返回 -1

EXP: s = "I am very very very sorry"
s.find('very')
s.find('very',5)
s.fing('very',6,13)
s.fing('very',-10,-1)

index(sub,[,start[,stop]]) -> int

        在指定的區間[start,end),從左至右,查找子串sub.找到返回索引,沒找到拋出異常value error

rindex(sub,[,start[,stop]]) -> int

        在指定的區間[start,end),從右至左,查找子串sub.找到返回索引,沒找到拋出異常value error

時間複雜度

        index和count方法都是O(n)

        隨着列表數據規模的增大,而效率下降

len(string)

        返回字符串的長度,及字符的個數

count(sub[,start[,end]]) -> int

        在指定區間[start,end),從左至右,統計子串sub出現的次數

字符串判斷*

endswith(suffix[,start[,end]]) -> bool

        在指定的區間[start,end),字符串是否是suffix結尾

startswith(prefix[,start[,end]]) -> bool

        在指定的區間[start,end),字符串是否是prefix開頭

字符串判斷 is系列

    isalnum() -> bool 是否是字母和數字組成

    isalpha() 是否是字母

    isdecimal() 是否只包含是十進制數字

    isdigit() 是否全部數字(0~9)

    isidentifier() 是不是字母和下劃線開頭,其它都是字母\數字\下劃線

    islower() 是否都是小寫

    isupper() 是否都是大寫

    isspace() 是否只包含空白字符

字符串格式化

字符串的格式化是一種憑藉字符串輸出樣式的首手段,更靈活方便

        .join(iterable) 拼接中能使用分隔符,且要求被拼接的是可迭代對象,(元素必須爲字符換)

        + 拼接字符串直接拼接,但是非字符串需要先轉換成字符串才能拼接

1.在2.5版本之前,只能使用printf style 風格的print輸出

        printf-style formatting,來自於c語言的printf函數

    格式要求:

        佔位符:使用%和格式字符組成,例如%s %d等

        s調用str(),r會調用repr().所有對象都可以被這2個轉換

        佔位符中還可以插入修飾符字符,例如%03d表示打印3個位置,不夠前面補0

        format % values,格式字符串和被格式的值之間使用%分隔

        value至少能是一個對象,或是一個和格式字符串佔位符數目相等的元組,或一個字典

2.format函數格式字符語法----python鼓勵使用

        "{}{xxx}".format(*args , **kwargs) -> str

        args是位置參數,是一個元組

        kwargs是關鍵字參數,是一個字典

        花括號表示佔位符

        {}表示按照順序匹配位置參數,{n}表示取位置參數索引爲n的值

        {xxx}表示在關鍵字參數中搜索名稱一致的

        {{}} 表示打印花括號

    位置參數

        "{}{}",format('a','b'),這就是按照位置順序用位置參數替換前面的格式字符串的佔位符中

    關鍵字參數或命名參數

        "{server}{1}{0}".format("b","a",server="c"),位置參數按照序號匹配,關鍵字參數按照名字匹配

    訪問元素

"{0[0]}..{0[1]}".format(("magedu","com"))

對象屬性訪問

from collections import namedtuple
point = namedtuple("point","x, y")
p = point(4,5)
"{{{0.x},{0.y}}}".format(p)


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