python學習隨筆(三)_字串

來源:互聯網
上載者:User

標籤:pre   效率   排版   精度   需要   表示   三元   magedu   ***   

字串***
    是由一個個字元組成的有序的序列,是字元的集合
    使用單引號,雙向引號,三引號引住的字元序列    #三引號中可以放sql語句
    字串是不可變對象

字串元素訪問
    字串支援使用索引訪問
    有序列的字元集合,字元序列
    字串可以是個容器,可以被一個個迭代出來,因為它是有順序的

字串join串連*
    "string".join(iterable) -> str
        將可迭代對象串連起來,使用string作為分隔字元
        可迭代對象本身元素都是字串
        ***返回一個新字串
        #‘,‘.join()    #join後接字串,‘‘中可以自訂間隔符
        #‘,‘.join(map(str,range(10)))

字串+串連    #+ -> str
    #將2個字串串連在一起
    #字串相加產生新的字串傳回值為none

字串分割*
    #分割字串的方法分為2類
        #split系:將字串按照分隔字元分割成若干字串,並返回列表
        #partition系:將字串按照分隔字元分割成2段,返回這2段和分隔字元的元組
split(sep=None, maxsplit=-1) -> list of strings    #從左向右
    #sep可以改分隔字元預設是空白字串作為分隔字元
    # maxsplit 指定分割的次數,-1 表示遍曆整個字串
    ##傳回型別是什麼很重要  決定可不可以join
    #rsplit()          #從右向左切,用法一樣

splitlines([keepends]) -> list of strings
    #按行切一行行切
    #keepends 指的是是否保留行分隔字元
    # 行分隔字元包括\n、\r\n、\r等

#常見分行符號:/r,/n ,/r/n
#空白分隔字元:空格,/t,/n

partition(sep) -> (head, sep, tail)
    #可以split的一個特例只切一回,帶分隔字元,但切完返回的是元組
    # 從左至右,遇到分隔字元就把字串分割成兩部分,返回頭、分隔字元、尾三部分的三元組;如果沒有找到分隔字元,就返回頭、2個空元素的三元組
    #sep分隔字元字串必須指定,不可以用Null 字元

切字串比較常用:比如用在分行,檔案路徑路徑,電話區號等等.

字串大小寫
    upper()        #全大寫
    lower()        #全小寫
    #大小寫,做判斷的時候用
    swapcase()    #互動大小寫

字串排版
    title() -> str    #標題的每個單詞都大寫
    capitalize() -> str    #首個單詞大寫
    center(width[, fillchar]) -> str
        #width 列印寬度
        #fillchar 填充的字元
        #格式:例:a.center(20,‘@‘)
    zfill(width) -> str
        #width 列印寬度,居右,左邊用0填充
    ljust(width[, fillchar]) -> str 靠左對齊
    rjust(width[, fillchar]) -> str 靠右對齊
    #中文用的少,瞭解一下

字串修改***
(替換)replace(old, new[, count]) -> str    #(替換)
    #字串中找到匹配替換為新子串,返回新字串
    #count表示替換幾次,不指定就是全部替換
(刪除) strip([chars]) -> str        #(兩端去除)
    #從字串兩端去除指定的字元集chars中的所有字元
    #如果chars沒有指定,去除兩端的空白字元
lstrip([chars]) -> str        #從左開始
rstrip([chars]) -> str        #從右開始

字串尋找***    #返回索引號    #格式num.find(‘s‘,0,6)不指定數字從頭開始找
find(sub[, start[, end]]) -> int
    #在指定的區間[start, end),從左至右,尋找子串sub。找到返回索引,沒找到返回-1
rfind(sub[, start[, end]]) -> int
    #在指定的區間[start, end),從右至左,尋找子串sub。找到返回索引,沒找到返回-1
index(sub[, start[, end]]) -> int
    #在指定的區間[start, end),從左至右,尋找子串sub。找到返回索引,沒找到拋出異常ValueError
rindex(sub[, start[, end]]) -> int
    #在指定的區間[start, end),從左至右,尋找子串sub。找到返回索引,沒找到拋出異常ValueError
count(sub[, start[, end]]) -> int
    #在指定的區間[start, end),從左至右,統計子串sub出現的次數
len(string)    #返回字串的長度,即字元的個數
時間複雜度:index和count方法都是O(n),隨著列表資料規模的增大,而效率下降


字串判斷***    #傳回值為布爾型
    #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() 是否只包含空白字元

字串格式化(c風格比較雜亂需要記得比較多)
字串的格式化是一種拼接字串輸出樣式的手段,更靈活方便
    #join拼接只能使用分隔字元,且要求被拼接的是可迭代對象
    #+ 拼接字串還算方便,但是非字串需要先轉換為**字串**才能拼接
在2.5版本之前,只能使用printf style風格的print輸出
    #printf-style formatting,來自於C語言的printf函數
    格式要求
    #預留位置:使用%和格式字元組成,例如%s、%d等
        #s調用str(),r會調用repr()。所有對象都可以被這兩個轉換。
    #預留位置中還可以插入修飾字元,例如%03d表示列印3個位置,不夠前面補零
    #format % values,格式字串和被格式的值之間使用%分隔
    #values只能是一個對象,或是一個和格式字串預留位置數目相等的元組,或一個字典


字串格式化***(運用format()函數格式化,python推薦版本)
*format函數格式字串文法——Python鼓勵使用*
    #"{} {xxx}".format(*args, **kwargs) -> str
    #args是位置參數,是一個元組
    #kwargs是關鍵字參數,是一個字典
    #花括弧表示預留位置
    #{}表示按照順序匹配位置參數,{n}表示取位置參數索引為n的值
    #{xxx}表示在關鍵字參數中搜尋名稱一致的
    #{{}} 表示列印花括弧
    #位置參數
        "{}:{}".format(‘192.168.1.100‘,8888),這就是按照位置順序用位置參數替換前面的格式字串的預留位置中
    #關鍵字參數或具名引數
        "{server} {1}:{0}".format(8888, ‘192.168.1.100‘, server=‘Web Server Info : ‘) ,位置參數按照序號匹配,
    #關鍵字參數按照名詞匹配
?         #訪問元素
            "{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)

        #對齊
            ‘{0}*{1}={2:<2}‘.format(3,2,2*3)    #冒號前面是索引號
            ‘{0}*{1}={2:<02}‘.format(3,2,2*3)    #可以寫成{:0<3}.format(6),對齊空的位置補0,0可以換成其他字元也支援
            ‘{0}*{1}={2:>02}‘.format(3,2,2*3)    #與上一個相反
            ‘{:^30}‘.format(‘centered‘)        #代表中間對齊
            ‘{:*^30}‘.format(‘centered‘)        #中間對齊0補空白位置
        #進位
            "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42)    #0是索引號,d十進位,x十六進位,o八進位,b二進位
            "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42)    #前面加成ox...
            把下面的數轉換輸出:
            octets = [192, 168, 0, 1]
            ‘{:02X}{:02X}{:02X}{:02X}‘.format(*octets)        #*octets,是把上面的列表解開放到format裡轉換成16進位
        #浮點數
            print("{}".format(3**0.5))  # 1.7320508075688772
            print("{:g}".format(3**0.5))  # 1.73205
            print("{:f}".format(3**0.5))  # 1.732051
            print("{:10f}".format(3**0.5))  # 靠右對齊#
            print("{:2}".format(102.231))  # 寬度為2
            print(“{:.2}”.format(3**0.5))  # 1.7 2個數字
            print("{:.2f}".format(3**0.5))  # 1.73 小數點後2位
            print("{:3.2f}".format(3**0.5))  # 1.73 寬度為3,小數點後2位
            print("{:3.3f}".format(0.2745)) # 0.275    #%3    控制寬度
            print("{:3.3%}".format(1/3))  # 33.333%    #%.3    控制精度

python學習隨筆(三)_字串

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.